我想更改wpf radiobutton的样式,以使子弹未显示,文本是大胆的,当isseledeed是真实的,文本不是大胆的,下划线的,并且cursor当签发时的手是错误的。我几乎可以使用它,但我无法得到下划线的文字。到目前为止,这是我的XAML。
<Style TargetType="{x:Type RadioButton}">
<Setter Property="Foreground" Value="DarkBlue" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Border SnapsToDevicePixels="True">
<ContentPresenter VerticalAlighment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="TextBlock.FontWeight" Value="UltraBold" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="TextBlock.TextDecorations" Value="Underline" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
任何人都可以提出的任何建议可以解释为什么在误认为错误时不会强调radiobutton的文本。
编辑:确定基于链接,只要我能够将样式更改为以下。
<Style TargetType="{x:Type RadioButton}">
<Setter Property="Foreground" Value="DarkBlue" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<TextBlock x:Name="TextBlock" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type RadioButton}}, Path=Content}" />
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="TextBlock.FontWeight" Value="UltraBold" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Cursor" Value="Hand" />
<Setter TargetName="TextBlock" Property="TextDecorations" Value="Underline" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
然后使用这种样式的radiobutton。
<RadioButton Content"New" IsChecked="True" />
<RadioButton Content="Filter" />
现在,这显示了两个没有子弹的radiobuttons,其内容是true时大胆的。
我唯一的评论现在是,如果我将文本块的文本属性绑定到radiobutton的内容属性,那么如果RadioButton的内容是其他内容,则会失败?
是的,它将在不显示内容的意义上失败,而是在内容上获得 ToString()
的结果,但是由于您希望无线电的下划线/大胆文本那似乎正是您想要的吗?