Добавление триггера в пользовательский элемент управления WPF - PullRequest
0 голосов
/ 03 марта 2010

У меня есть пользовательский элемент управления с именем 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, если это возможно.

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

Toni.

1 Ответ

0 голосов
/ 11 июня 2010

Toni

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...