使用WPF MVVM触发列表框数据模板中控件的事件
本文关键字:控件 事件 数据 MVVM WPF 列表 使用 | 更新日期: 2023-09-27 18:13:08
<ListBox Grid.Row="1" Grid.Column="1" Style="{StaticResource BasicListBoxStyle}" ItemsSource="{Binding TripAttributeOptions}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Description}" IsChecked="{Binding ExcludeVal, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<cmd:EventToCommand PassEventArgsToCommand="True" Command="Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.GroupCheckBoxCheckCommand}"></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
有一个属性绑定到我的Listbox数据模板的复选框,当该属性设置为true时,Listbox的复选框也被检查,现在我想通过事件执行命令,但它不会触发。请帮助
您的EventToCommand
Command
绑定表达式中缺少开头的{
:
<cmd:EventToCommand PassEventArgsToCommand="True" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.GroupCheckBoxCheckCommand}"></cmd:EventToCommand>
EventToCommand
对我来说总是感到不必要的复杂。你为什么想让它成为命令?
为什么不直接从绑定到IsChecked
的ExcludeVal
属性的setter中调用命令的execute方法呢?或者让视图模型监视自己的PropertyChanged
事件并查找ExcludeVal
属性何时发生变化?