Использование привязок для запуска изменения стиля - PullRequest
0 голосов
/ 26 января 2012

Надеюсь, здесь кто-то может помочь.

У меня есть ListView, который заполняется свойством List в моей ViewModel.

У меня есть другое свойство List в моей ViewModel, которое содержит строки в пользовательском интерфейсе, которые мне нужно выделить.

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

Это именно так и выглядит, любой элемент, который я выбрал в ListView, выделяется красным. Я хочу иметь возможность привязать этот триггер стиля к свойству List в моей ViewModel.

Кто-нибудь знает, как этого можно достичь?

1 Ответ

4 голосов
/ 26 января 2012

Создайте свойство с именем 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.Обычные триггеры предназначены только для свойств элемента интерфейса, а не для привязок.

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