如何更改 XAML 中 ToggleButton 的自定义内容
How to change the custom content of a ToggleButton in XAML
我更改了 ResourceDictionary
中 ToggleButton
的样式。在我的风格中,我正在更改 ToggleButton
的 ControlTemplate
,并在 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}"/>
希望这对您有所帮助,干杯。
我更改了 ResourceDictionary
中 ToggleButton
的样式。在我的风格中,我正在更改 ToggleButton
的 ControlTemplate
,并在 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}"/>
希望这对您有所帮助,干杯。