管理 DateTimerPicker 控件 WPF 中的更改

Manage changes in a DateTimerPicker control WPF

我在 WPF MVVC 应用程序中使用 DateTimePicker。它看起来像这样:

<Label Content="Date: "/>
<xctk:DateTimePicker 
  Value="{Binding Example.FirstDate, 
    Mode=TwoWay,
    UpdateSourceTrigger=PropertyChanged, 
    Converter={StaticResource validDateConverter}}"
      Format="Custom" 
      FormatString="{}dd/MM/yyyy HH:mm">
</xctk:DateTimePicker>

我现在想做的是了解日期的变化。 因此,如果用户更改日期,我可以在 ViewModel 中执行一些操作。它必须在 ViewModel 中,而不是在代码隐藏中。 (我这么说是因为事件不是一个选项)。

我的想法是使用命令或触发器,但它不允许我(这不是一个选项)。 有人可以帮我吗?非常感谢您。

这是一个使用 CheckBox 的示例,但对于 DateTimePicker 控件也是一样的: 您需要像这样添加引用:

xmlns:b="http://schemas.microsoft.com/xaml/behaviors"

那么你可以这样做:

<CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}"
          Content="{Binding Path=Item.Description}">

    <b:Interaction.Triggers>
        <b:EventTrigger EventName="Checked">
            <b:InvokeCommandAction
                Command="{Binding DataContext.AddUserPermissionCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"
                CommandParameter="{Binding Path=Item.Id}" />
        </b:EventTrigger>

        <b:EventTrigger EventName="Unchecked">
            <b:InvokeCommandAction
                Command="{Binding DataContext.RemoveUserPermissionCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"
                CommandParameter="{Binding Path=Item.Id}" />
        </b:EventTrigger>
    </b:Interaction.Triggers>
</CheckBox>

如您所见,在本例中它挂钩到事件“Checked”,然后调用一个命令。因此,您可以对需要从中触发命令的任何控件和事件执行相同的操作。