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" />
Другие вопросы по тегам