我有一个名为DatePicker.xaml的自定义用户控件。它背后的代码是DatePicker.xaml.cs:
namespace GesHoras.UserControls
{
/// <summary>
/// Lógica de interacción para DatePicker.xaml
/// </summary>
///
public partial class DatePicker : UserControl
{
<...>
private int _day;
private int _year;
private int _month;
public int Day
{
get { return _day; }
set
{
//DateTime dt;
int _daysInMonth;
_daysInMonth = System.DateTime.DaysInMonth(_year, _month);
if ((_day >= MIN_DAY) && (_day <= _daysInMonth))
{
_day = value;
}
}
}
public DayOfWeek DayOfWeek
{
get
{
DateTime dt = new DateTime(_year, _month, _day);
return dt.DayOfWeek;
}
}
<...>
}
}当用户单击日期标签(当前月份的每一天都是日历中的一个标签)时,Day和DayOfWeek属性会发生变化。
我在页面PageHoras.xaml中使用此自定义控件:
<Page x:Class="GesHoras.Pages.PageHoras"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;
assembly=PresentationFramework.Aero"
xmlns:local="clr-namespace:GesHoras.UserControls"
xmlns:Classes="clr-namespace:GesHoras.Classes"
xmlns:d="http://schemas.microsoft.com/expression/blend/2006"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="Horas"
Loaded="Page_Loaded">
<...>
<CheckBox Grid.Row="1"
Name="ckCompensar"
Margin="10,0,10,5"
HorizontalAlignment="Left"
Width="{Binding Path=ActualWidth-10, ElementName=GrpHorario}">
Compensar
</CheckBox>
<local:DatePicker x:Name="_Calendar">
<...>
</Page>然后我想要的是,当用户单击自定义用户控件(日历)中的一天时,我想处理日历中的DayOfWeek属性更改并在PageHoras.xaml中触发触发器,因此我想启用/禁用PageHoras.xaml中的复选框取决于所选的星期几(启用饱和->,禁用一周中的其余天-> )。
我该怎么做呢?
是否可以在PageHoras.xaml中为此自定义用户控件添加触发器?如下所示:
<local:DatePicker x:Name="_Calendar">
<Trigger Property="DayOfWeek" Value="Saturday">
<Setter Property="IsEnabled" TargetName="ckCompensar" Value="true"/>
</Trigger>
HERE I HAVE ANOTHER PROBLEM: HOW TO SET PROPERTY ISENABLED TO FALSE FOR TARGET
ckCompensar WHEN DAY OF WEEK IS DIFFERENT FROM SATURDAY¿?
</local:DatePicker>或者这样:
<local:DatePicker x:Name="_Calendar">
<Trigger Property="Day" Value="5">
<Setter Property="IsEnabled" TargetName="ckCompensar" Value="true"/>
</Trigger>
HERE I HAVE THE SAME PROBLEM AGAIN: HOW TO SET PROPERTY ISENABLED TO FALSE FOR
TARGET ckCompensar WHEN DAY OF WEEK IS DIFFERENT FROM 5¿?
</local:DatePicker>但是XAML解析器告诉我这是不正确的。如果可能的话,我想用XAML代码来做这件事。
非常感谢,
托尼。
发布于 2010-06-12 01:10:12
托尼
您是否尝试过使用WPF中可用的DatePicker或日历控件?听起来您只想将checkbox状态绑定到Calendar date中的更改,但您希望在XAML中实现这一点,而不是在代码中。
当一天是5天或者DayOfWeek是星期六时,你要做的就是选中这个复选框(这些是类似的语句吗)?我对这个问题的理解正确吗?
https://stackoverflow.com/questions/2370082
复制相似问题