使用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的复选框也被检查,现在我想通过事件执行命令,但它不会触发。请帮助

使用WPF MVVM触发列表框数据模板中控件的事件

您的EventToCommand Command绑定表达式中缺少开头的{:

应:

<cmd:EventToCommand PassEventArgsToCommand="True" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.GroupCheckBoxCheckCommand}"></cmd:EventToCommand>

EventToCommand对我来说总是感到不必要的复杂。你为什么想让它成为命令?

为什么不直接从绑定到IsCheckedExcludeVal属性的setter中调用命令的execute方法呢?或者让视图模型监视自己的PropertyChanged事件并查找ExcludeVal属性何时发生变化?