WPF中为Expander设置切换式自定义图标问题求助
WPF Expander切换状态时更换图标解决方法
要解决Expander切换状态时图标不更换的问题,只需要给模板里的Image控件加个名字,再在IsChecked的Trigger里设置它的图片源就行,具体修改如下:
修改后的完整代码
<Style x:Key="ExpanderDownHeaderStyle" TargetType="{x:Type ToggleButton}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ToggleButton}"> <Border Padding="{TemplateBinding Padding}"> <Grid SnapsToDevicePixels="False"> <Grid.ColumnDefinitions> <ColumnDefinition Width="19"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <!-- 给Image添加x:Name,方便Trigger定位 --> <Image x:Name="ExpanderIcon" Source="Assets\icons\hide.png"/> <ContentPresenter Grid.Column="1" HorizontalAlignment="Left" Margin="4,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="True" VerticalAlignment="Center"/> </Grid> </Border> <ControlTemplate.Triggers> <Trigger Property="IsChecked" Value="true"> <!-- 通过Setter修改指定Name的Image的Source属性 --> <Setter TargetName="ExpanderIcon" Property="Source" Value="Assets\icons\show.png"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
关键修改点
- 给模板内的
Image控件添加x:Name="ExpanderIcon",让Trigger能准确找到要修改的元素 - 在
IsChecked=true的Trigger中,用<Setter TargetName="ExpanderIcon" Property="Source" Value="Assets\icons\show.png"/>来切换图片源
这样当Expander展开(ToggleButton的IsChecked为true)时,图标就会自动从hide.png切换成show.png了。
内容的提问来源于stack exchange,提问作者J4ns323
相关产品推荐
相关产品推荐

