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只能设置属于元素的属性的值
]
我有一个 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只能设置属于元素的属性的值
]