MultiTrigger: комбинированные DataTrigger и PropertyTrigger не работают - PullRequest
0 голосов
/ 01 марта 2012

У меня есть проблема, когда мне нужно объединить DataTrigger и PropertyTrigger в MultiDataTrigger, чтобы показать Image в GridViewColumn (в сочетании с TreeView, это пользовательский элемент управления Iпользуюсь).Я экспериментировал и искал некоторые вещи в Интернете, и вот как далеко я продвинулся:

 <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, я хочу, чтобы Image получил изображение folder_open.Я думаю, что я близок с приведенным выше кодом, но он на самом деле не работает.Image вообще не меняется, когда я открываю TreeViewNode.

Я думаю, что я делаю что-то не так с Условием на RelativeSource=Self, но я не уверен.

Кто-нибудь, кто может мне помочь, пожалуйста?Заранее спасибо.

Конечно, при необходимости можно предоставить больше информации / кода.

1 Ответ

1 голос
/ 01 марта 2012

Проблема не в RelativeSource = Self, а при попытке сравнить Source (который имеет тип ImageSource) со строковым значением ("/folder_closed.png"), он возвращает false

Попробуйте выполнить следующее условие:

<Condition Binding="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" Value="/folder_closed.png" />
...