2010-03-03 4 views
0

У меня есть пользовательский элемент управления с именем DatePicker.xaml. Его код за это DatePicker.xaml.cs:Добавление триггера в пользовательский элемент управления WPF

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; 
     } 
    } 
    <...> 
} 

} 

день и 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, зависит от выбранного дня недели (saturdary -> enabled, rest days of week -> disabled).

Как я могу это сделать?

Можно ли добавить триггер в 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, если это возможно.

Большое спасибо,

Toni.

ответ

0

Toni,

Вы пробовали с помощью DatePicker или управления Calendar, доступных в WPF? Похоже, вы просто хотите привязать состояние флажка к изменениям в выбранной календарной дате, но вы хотите сделать это в XAML, а не в коде.

И что вы хотите сделать, установите флажок, если день равен 5, или DayOfWeek - суббота (это аналогичные заявления)? Правильно ли я понимаю вопрос?

Смежные вопросы