我遇到问题,我需要将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
)并且Image Source是folder_closed时,我希望Image获取folder_open图像。我认为我接近上面的代码,但它并没有真正起作用。当我打开Image
时,TreeViewNode
根本没有变化。
我认为我在RelativeSource=Self
上对条件做错了,但我不确定。
有人可以帮我吗?提前谢谢。
当然,如果需要,可以提供更多信息/代码。
答案 0 :(得分:1)
问题不在于RelativeSource = Self,但是当您尝试将Source(其类型为ImageSource)与字符串值(“/ folder_closed.png”)进行比较时,它将返回false
请尝试以下条件:
<Condition Binding="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" Value="/folder_closed.png" />