1

我想更改 WPF RadioButton 的样式,以便不显示 Bullet,当 IsSelected 为 true 时文本为粗体,当 IsSelected 为 false 时,文本不加粗,带下划线,光标为手。我几乎可以使用它,但我无法在文本中加下划线。到目前为止,这是我的 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>

任何人都可以提供任何可以解释为什么当 IsSelected 为 False 时 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" />

现在显示两个没有 Bullet 的 RadioButton,当 IsSelected 为真时,其内容为粗体,当 IsSelected 为假时,它不加粗,加下划线并显示手形光标。

我现在唯一的评论是,如果我将 TextBlock 的 Text 属性绑定到 RadioButton 的 Content 属性,如果 RadioButton 的内容不是字符串,那会失败吗?

4

1 回答 1

0

是的,它会失败,因为内容不会显示,相反,您会得到ToString()内容的结果,但是由于您想要为您的收音机添加下划线/粗体文本,这似乎正是您想要的?

于 2012-10-23T08:20:48.877 回答