Условие DataTrigger с использованием присоединенного свойства Selector.IsSelectionActive. - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь переопределить триггеры 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).

Есть идеи, как этого добиться?

РЕДАКТИРОВАТЬ : на самом деле это невозможно сделать, даже скопировав весь шаблон и попытавшись изменить триггеры = |

...