Я пытаюсь переопределить триггеры Mahapps ListBoxItem
Controls.ListBox.xaml без копирования всего ControlTemplate
.Для этого я переопределяю стиль, добавляя триггеры стиля.Моя цель - переопределить цвет элемента Background
в зависимости от флага ограниченной модели.Поэтому я сделал следующее:
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsCurrentPaused}" Value="True">
<Setter Property="Background" Value="{StaticResource HighlightCurrentPausedBrush}"/>
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsCurrentPaused}" Value="True"/>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource HighlightCurrentPausedBrush}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsCurrentPaused}" Value="True"/>
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="True"/>
<Condition Binding="{Binding IsSelectionActive, RelativeSource={RelativeSource Self}}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource HighlightCurrentPausedBrush}"/>
</MultiDataTrigger>
</Style.Triggers>
IsCurrentPaused
- это флаг, и когда он равен true
, цвет элемента должен изменяться во всех состояниях (при наведении курсора мыши, выбранном, так далее).Однако, согласно моему тестированию, Selector.IsSelectionActive
должен быть в состоянии, иначе он не будет работать;подвох в том, что я не могу создать привязку с Selector.IsSelectionActive
в MultiDataTrigger
.
Как видите, мне нужен триггер, использующий данные из ListBoxItem
и данные из model
, и этовозможно только с использованием DataTrigger
(и установка привязки на RelativeSource={RelativeSource Self}}
при использовании свойств ListBoxItem
).
Есть идеи, как этого добиться?
РЕДАКТИРОВАТЬ : на самом деле это невозможно сделать, даже скопировав весь шаблон и попытавшись изменить триггеры = |