MultiTrigger:组合DataTrigger和PropertyTrigger无法正常工作

时间:2012-03-01 10:03:13

标签: wpf image datatrigger multidatatrigger multitrigger

我遇到问题,我需要将DataTriggerPropertyTrigger合并到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)并且Image Source是folder_closed时,我希望Image获取folder_open图像。我认为我接近上面的代码,但它并没有真正起作用。当我打开Image时,TreeViewNode根本没有变化。

我认为我在RelativeSource=Self上对条件做错了,但我不确定。

有人可以帮我吗?提前谢谢。

当然,如果需要,可以提供更多信息/代码。

1 个答案:

答案 0 :(得分:1)

问题不在于RelativeSource = Self,但是当您尝试将Source(其类型为ImageSource)与字符串值(“/ folder_closed.png”)进行比较时,它将返回false

请尝试以下条件:

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