Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中的MouseOver上的ToggleButton文本下划线_C#_Wpf_Styles_Onmouseover_Togglebutton - Fatal编程技术网

C# 在WPF中的MouseOver上的ToggleButton文本下划线

C# 在WPF中的MouseOver上的ToggleButton文本下划线,c#,wpf,styles,onmouseover,togglebutton,C#,Wpf,Styles,Onmouseover,Togglebutton,当鼠标位于按钮上方时,如何在按钮的文本下划下划线?我正在使用下面的代码,但当我悬停鼠标时,什么也没有发生 <Style x:Key="BaseToggleButton" TargetType="ToggleButton"> <Setter Property="SnapsToDevicePixels" Value="true" /> <Setter Property="TextOptions.TextFormattingMode" Value="Dis

当鼠标位于
按钮上方时,如何在
按钮的文本下划下划线?我正在使用下面的代码,但当我悬停鼠标时,什么也没有发生

<Style x:Key="BaseToggleButton" TargetType="ToggleButton">
    <Setter Property="SnapsToDevicePixels" Value="true" />
    <Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Margin" Value="0 3 0 3"/>
    <Setter Property="FontSize" Value="11"/>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <StackPanel Orientation="Horizontal" x:Name="Border">
                    <Image Width="13" Height="13" Source="{StaticResource ColumnsLayoutMiniIcon}">
                    </Image>
                    <Border x:Name="Content"
                            Padding="4 2 4 2"
                            Margin="5 0 0 0">
                        <ContentPresenter HorizontalAlignment="Center" 
                                          VerticalAlignment="Center" 
                                          RecognizesAccessKey="True" />

                    </Border>                        
                </StackPanel>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="Border" Property="Cursor" Value="Hand"/>
                        <Setter TargetName="Content" Property="TextBlock.TextDecorations" Value="Underline"/>
                    </Trigger>
                    <Trigger Property="IsChecked" Value="False">

                    </Trigger>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter TargetName="Content" Property="Background" Value="#acacac"></Setter>
                        <Setter TargetName="Content" Property="TextBlock.Foreground" Value="Black"></Setter>
                    </Trigger>
                </ControlTemplate.Triggers>

            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

这很奇怪,因为代码的这一部分是有效的:

<Setter TargetName="Border" Property="Cursor" Value="Hand"/>

如果要设置样式中的
textEditions=“Underline”
,则需要使用
TextBlock
而不是
ContentPresenter
(或任何其他控件)

是的,它是dependency属性,但并不恰当,是由
TextBlock
定义和公开的普通依赖属性,并且在以下位置完全可见:


因此,此属性只能设置为控制
TextBlock

的类型。请查看此属性,它显示了一种有趣的方式,通过将ContentPresenter封装在TextBlock中,然后将TextBlock用作触发器的目标,来实现ContentPresenter作为一个整体的下划线,这样就突出了整个ContentPresenter。感谢您提供的链接帮助我解决了这个问题。
TextBlock.TextDecorationsProperty = Inline.TextDecorationsProperty.AddOwner(typeof(TextBlock),
                                    new FrameworkPropertyMetadata(new FreezableDefaultValueFactory(TextDecorationCollection.Empty), 
                                    FrameworkPropertyMetadataOptions.AffectsRender));