MultiTrigger: комбинированные DataTrigger и PropertyTrigger не работают
У меня есть проблема, где мне нужно объединить DataTrigger
и PropertyTrigger
в MultiDataTrigger
показать Image
в GridViewColumn
(в сочетании с TreeView
Это пользовательский элемент управления, который я использую). Я экспериментировал и искал некоторые вещи в Интернете, и вот как далеко я зашел:
<Image Width="16"
Height="16"
Stretch="UniformToFill">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source"
Value="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding WpfSettings.IsExpanded}" Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Source}" Value="/folder_closed.png" />
</MultiDataTrigger.Conditions>
<Setter Property="Source" Value="/folder_open.png" />
</MultiDataTrigger>
</Style.Triggers>
</Image.Style>
</Image>
Теперь изначально Image
может иметь два изображения, в соответствии с Converter
, Либо folder_open, либо другой (сейчас это не важно). Теперь то, что я хочу: когда TreeViewNode развернут (WpfSetting.IsExpanded = true
) и когда источником изображения является folder_closed, я хочу, чтобы изображение получило изображение folder_open. Я думаю, что я близок с приведенным выше кодом, но он на самом деле не работает. Image
не меняется вообще, когда я открываю TreeViewNode
,
Я думаю, что я делаю что-то не так с Условием на RelativeSource=Self
, но я не уверен.
Кто-нибудь, кто может мне помочь, пожалуйста? Заранее спасибо.
Конечно, при необходимости можно предоставить больше информации / кода.
1 ответ
Проблема не в RelativeSource=Self, а когда вы пытаетесь сравнить Source(который имеет тип ImageSource) со строковым значением ("/folder_closed.png"), он возвращает false
Попробуйте следующее условие:
<Condition Binding="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" Value="/folder_closed.png" />