首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向WPF自定义控件添加触发器

向WPF自定义控件添加触发器
EN

Stack Overflow用户
提问于 2010-03-03 17:43:32
回答 1查看 1.2K关注 0票数 0

我有一个名为DatePicker.xaml的自定义用户控件。它背后的代码是DatePicker.xaml.cs:

代码语言:javascript
复制
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中使用此自定义控件:

代码语言:javascript
复制
  <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中为此自定义用户控件添加触发器?如下所示:

代码语言:javascript
复制
<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>

或者这样:

代码语言:javascript
复制
<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代码来做这件事。

非常感谢,

托尼。

EN

回答 1

Stack Overflow用户

发布于 2010-06-12 01:10:12

托尼

您是否尝试过使用WPF中可用的DatePicker或日历控件?听起来您只想将checkbox状态绑定到Calendar date中的更改,但您希望在XAML中实现这一点,而不是在代码中。

当一天是5天或者DayOfWeek是星期六时,你要做的就是选中这个复选框(这些是类似的语句吗)?我对这个问题的理解正确吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2370082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档