我想基于IsDropDownOpen显示不同的组合框图像。不确定如何正确访问'imgArrow'。
wmic
上面代码中的粗体触发器失败。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
ControlTemplate
触发器无法在Image
的{{1}}中找到ContentTemplate
元素,但您可以应用ContentPresenter
直接转到Style
元素本身并从Image
移除IsDropDownOpen
个触发器:
ControlTemplate
答案 1 :(得分:0)
在场景中,您应该使用DataTrigger
<DataTemplate>
<Grid>
<TextBlock Text="{Binding}" />
<Image x:Name="imgArrow"
Source="{DynamicResource ComboBoxArrowNormalImage}"
RenderOptions.BitmapScalingMode="HighQuality" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ComboBox}, Path=IsDropDownOpen}"
Value="True">
<Setter TargetName="imgArrow"
Property="Source"
Value="{DynamicResource ComboBoxArrowHoverImage}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
但是,我无法理解您将图像放在ContentPresenter中的DataTemplate中的原因。我不确定这是造型的正确方式。
如果您想要更改图片的来源,而IsDropDownOpen
为True
,则一种方法是将所有内容都设为Grid
:
<Grid >
<ContentPresenter />
<Image />
<ToggleButton />
<Popup/>
</Grid>
并设置BackGround
和Trigger
属性。