我想更改ToggleButton的图标(内容为Fluent RibbonBar),具体取决于它的IsChecked属性。现在我写了以下样式片段:IsChecked的触发器不会触发
<Fluent:ToggleButton.Style>
<Style BasedOn="{StaticResource RibbonButtonStyle}" TargetType="{x:Type Fluent:ToggleButton}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Fluent:ToggleButton}}, Path=IsChecked}" Value="False">
<Setter Property="Icon" Value="{StaticResource ResourceKey=Style.Images.Pined}"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Fluent:ToggleButton}}, Path=IsChecked}" Value="True">
<Setter Property="Icon" Value="{StaticResource ResourceKey=Style.Images.Unpined}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Fluent:ToggleButton.Style>
问题是,触发器不能很好地加载图像。问题不是,IsChecked没有实现,我已经测试过了。而且我也没有在其他地方设置图标属性。如果我在其他地方使用它们,图像资源也可以正常工作。
重建信息:我已将ToggleButton放入Backstage作为放置在BackstageTabItem中的RibbonListBox的DataTemplate。
你不是直接在别处设置Icon属性?在这种情况下,'Setter's不起作用。 – lbergnehr
只能直接在ToggleButton声明中...我会试用。 – CShark
从Element声明中删除“Icon =”不起作用 – CShark