任何显示星星图像而不是RadioButton的方式

本文关键字:RadioButton 方式 显示 星星 图像 任何 | 更新日期: 2023-09-27 18:28:39

在WPF中?

很抱歉,这是一个基本问题,还在这里学习基础知识!

任何显示星星图像而不是RadioButton的方式

复制/粘贴/运行这个愚蠢的示例:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <Style TargetType="{x:Type RadioButton}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RadioButton}">
                    <StackPanel Orientation="Horizontal">
                        <Polygon x:Name="star" Fill="Transparent" Stroke="Gray" StrokeThickness="2" Points="18,4 22,14 35,14 24,20 28,30 18,24 8,30 12,20 2,14 14,14"/>
                        <TextBlock Text="{TemplateBinding Content}" VerticalAlignment="Center" Margin="4,0"/>
                    </StackPanel>
                    <ControlTemplate.Triggers>
                        <Trigger Property="RadioButton.IsChecked" Value="True">
                            <Setter TargetName="star" Property="Polygon.Fill" Value="Gold"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<StackPanel>
    <RadioButton Content="one" GroupName="sillySample" IsChecked="True" />
    <RadioButton Content="two" GroupName="sillySample"/>
    <RadioButton Content="tree" GroupName="sillySample"/>
</StackPanel>

简而言之,在WPF中,你可以覆盖一些控制模板,用你想要的任何东西交换内部控制结构,但保持它的行为,就像我在这里所做的那样(只是为了证明这一点)我使用RadioButton.IsChecked属性将Fill设置为Gold,因为它(IsChecked)不属于文本块或多边形,然而,我仍然可以使用它,因为我正在覆盖RadioButton的模板

不管怎样,祝好运

denis

是的,你可以。问题是您必须为单选按钮创建一个xaml样式

您可以替换控制模板。

http://msdn.microsoft.com/en-us/library/ms745683.aspx#styling_controltemplates