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

时间:2015-01-07 00:16:30

标签: wpf xaml togglebutton

我更改了ToggleButtonResourceDictionary的样式。按照我的风格,我正在更改ControlTemplate的{​​{1}},并在ToggleButton之前放置一张图片。

现在这是我的问题:我需要针对XAML中使用的不同Content更改图片,我是否应该为每个ToggleButtons定义不同的样式或不同的图像或有什么办法可以在XAML中改变它的形象吗?

ToggleButton

有没有办法可以在这里改变图像而不是风格?

<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>

1 个答案:

答案 0 :(得分:4)

当然,你可以重新使用一个真正方便的未使用的属性,这种情况称为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}"/>

希望这会有所帮助,欢呼。