使用Bindings触发样式更改

时间:2012-01-25 20:53:32

标签: c# wpf mvvm triggers styles

希望有人可以在这里提供帮助。

我有一个ListView,它由我的ViewModel中的List属性填充。

我的ViewModel中有另一个List属性,其中包含我需要突出显示的UI中的行。

   <ListView.Resources>
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Foreground" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListView.Resources>

这完全是看起来的样子,我在ListView中选择的任何项目都以红色突出显示。 我希望能够将此样式触发器绑定到ViewModel中的List属性。

有人知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:4)

在您的商品上创建名为IsSelected的商家,并将其绑定到您的ListViewItem.IsSelected

<Style TargetType="ListViewItem">
    <Setter Property="IsSelected" Value="{Binding IsSelected}" />
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Foreground" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

修改

如果要基于DataItem中的属性应用其他样式设置器,请使用DataTrigger而不是常规Trigger。常规触发器仅用于UI元素属性,而不是绑定。

<Style TargetType="ListViewItem">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsHighlighted}" Value="True">
            <Setter Property="Foreground" Value="Red" />
        </DataTrigger>
    </Style.Triggers>
</Style>