ListViewItem.IsSelected上的WPF DataTrigger

ListViewItem.IsSelected上的WPF DataTrigger,wpf,xaml,listview,triggers,Wpf,Xaml,Listview,Triggers,我有一个ListView,样式如下: <ListView.View> <GridView> <GridViewColumn Header="Reset" Width="60"> <GridViewColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{B

我有一个ListView,样式如下:

<ListView.View>
    <GridView>
        <GridViewColumn Header="Reset" Width="60">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding ResetThisItem}" />
                </DataTemplate>
             </GridViewColumn.CellTemplate>             
        </GridViewColumn>
    </GridView>
</ListView.View>

在ViewModel类中,我有属性“ResetThisItem”

当用户选择ListView的完整行时,我希望将此属性设置为true。如果取消选择该项,则不会发生任何事情

我知道这里需要DataTriggers,但我不知道在哪里,因为我不知道在哪里可以访问ListViewItem.IsSelected和我的ViewModel.ResetThisItem,以及如何在xaml中绑定它们

任何提示,不胜感激。 谢谢



这可能是实现你所追求的目标的最简单的方法。如果您喜欢代码方法或其他角度,请告诉我。我希望这有帮助。:)

不是100%确定,所以一条注释就足够了:为listview创建一个新的ItemContainerStyle,但不要覆盖模板,这样您就可以访问ViewModel和ListViewItem了。@DoHileFor:我就是这么做的,但是我没有从DataTrigger的Setter中找出如何与ViewModel关联……请记住,绑定始终与DataContext关联,如果将视图模型设置为DataContext,那么应该不会有问题。因此,DataTrigger将自动引用ViewModel。但是,如果通过将另一个对象指定为DataContext来覆盖该行为,则需要另一种方法。所以我不涉及数据上下文。但是我想换一种方式,你可以在你的容器样式中使用一个非常简单的setter。但我可能会完全改变这种方法,并为此使用命令。如果选择了图元,将触发一个命令,该命令将在视图模型中处理。我永远不会使用属性来触发操作,就像您的ResetThisItem听起来一样。一个属性应该是一个状态,而不是仅仅为了触发某个东西的临时动作。但是我希望当用户取消选择某个项目时,仍然选中stillbox。
<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="IsSelected" Value="{Binding ResetThisItem, Mode=OneWayToSource}"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Reset" Width="60">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding ResetThisItem}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>