如何更改 XAML 中 ToggleButton 的自定义内容

How to change the custom content of a ToggleButton in XAML

我更改了 ResourceDictionaryToggleButton 的样式。在我的风格中,我正在更改 ToggleButtonControlTemplate,并在 Content 之前放置一张图片。

现在我的问题是: 图像需要根据我在 XAML 中使用的不同 ToggleButtons 进行更改,我是否应该为每个图像定义不同的样式 ToggleButton 使用不同的图像,或者有什么方法可以在 XAML 中更改其图像?

<Style x:Key="BaseToggleButton" TargetType="ToggleButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <StackPanel Orientation="Horizontal" x:Name="Border">
                    <Image Width="13" Height="13" Source="{StaticResource ColumnsLayoutMiniIcon}"/>
                    <TextBlock>
                        <ContentPresenter/>
                    </TextBlock>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

有什么方法可以改变这里的图像而不是风格?

<RadioButton Content="Plan View"
             GroupName="View"
             Style="{StaticResource BaseToggleButton}">
</RadioButton>

当然,您可以使用一个未使用的 属性,它在这种情况下非常方便,称为 Tag,您可以使用它来传递图像路径或资源声明等等,一旦我们将它绑定到模板,如;

<Style x:Key="BaseToggleButton" TargetType="ToggleButton">
    <!-- Let's give it a default -->
    <Setter Property="Tag" Value="{StaticResource ColumnsLayoutMiniIcon}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <StackPanel Orientation="Horizontal" x:Name="Border">
                    <Image Width="13" Height="13" 
                           Source="{TemplateBinding Tag}"/>
                    <ContentPresenter/>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

现在我们可以保持原样,它应该显示那个迷你图标作为您的默认图标,您可以在实例级别指定一个新图标,例如;

<ToggleButton Content="Plan View"
              Tag="{StaticResource ADifferentImagePathOrResourcePointingToOne}"
              Style="{StaticResource BaseToggleButton}"/>

希望这对您有所帮助,干杯。