WPF - 从 DataTrigger 更新依赖项 属性

WPF - update a dependency property from a DataTrigger

我有一个 listView 并希望在选择项目时更新 DataContext 中的 public 值。 我知道我可以通过列表视图中的 SelectedItem 来做到这一点,我想用数据触发器来做到这一点(如果可能的话)。

代码:

<Window.DataContext>
    <local:MainWindowViewModel></local:MainWindowViewModel>
</Window.DataContext>
<Grid>
    <ListView ItemsSource="{Binding listsToDisplay}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding listName}"></TextBlock>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True">
                        <Setter Property="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindowViewModel}}, Path=listWidth}" Value="1"></Setter>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </ListView.ItemTemplate>      
    </ListView>
</Grid>

您可以将 listView 的选定项绑定到视图模型上的 属性,然后当该值通过 属性 更改时在视图模型中进行更新。

<ListView ItemsSource="{Binding listsToDisplay}" SelectedItem="{Binding SelectedItem}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding listName}"></TextBlock>                
    </ListView.ItemTemplate>      
</ListView>

这还有一个优点是允许您在 viewModel 中获取或设置所选项目。

I want to do this (if possible) with a data trigger.

这是不可能的。您不能在样式 setter 中设置视图模型 属性 的值。

样式setter只能设置属于元素的属性的值

]