【问题标题】:Manage changes in a DateTimerPicker control WPF管理 DateTimePicker 控件 WPF 中的更改
【发布时间】:2021-10-19 05:38:07
【问题描述】:

我在我的 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 中而不是在代码隐藏中。 (我这么说是因为事件不是一个选项)。

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

【问题讨论】:

  • FirstDate 属性将在日期更改时设置,因此您可以在此设置器中处理您的逻辑。

标签: wpf binding command datetimepicker


【解决方案1】:

这是一个使用 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”事件挂钩,然后调用命令。因此,您可以对需要从中触发命令的任何控件和事件执行相同操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多