【问题标题】:How to set Border property for ToggleButton in WPF如何在 WPF 中为 ToggleButton 设置 Border 属性
【发布时间】:2015-03-03 12:59:03
【问题描述】:

我正在尝试设置ToggleButton 的样式。但由于某些奇怪的原因,我无法设置 Border 属性。不显示边框。

我得到的是:

我想要的是:

<Style x:Key="MyToggleButton" TargetType="ToggleButton">
    <Setter Property="SnapsToDevicePixels" Value="true" />
    <Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Margin" Value="0 -1 0 0"/>
    <Setter Property="FontSize" Value="11"/>
    <Setter Property="BorderThickness" Value="0 1 1 0"/>
    <Setter Property="BorderBrush" Value="Green"/>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <Border x:Name="Border" 
                        Width="62" 
                        Height="19">
                    <ContentPresenter HorizontalAlignment="Center" 
                                      VerticalAlignment="Center" 
                                      Margin="-2 -3 0 0"
                                      RecognizesAccessKey="True" />
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="Border" Property="Cursor" Value="Hand"/>
                    </Trigger>
                    <Trigger Property="IsChecked" Value="False">
                        <Setter TargetName="Border" Property="Background">
                            <Setter.Value>
                                <ImageBrush TileMode="FlipY" ImageSource="pack://application:,,,/Main/Resources/dark/images/tab_normal_bg.png" />
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsChecked" Value="True">
                        <Setter TargetName="Border" Property="Background">
                            <Setter.Value>
                                <ImageBrush TileMode="FlipY" ImageSource="pack://application:,,,/Main/Resources/dark/images/tab_pressed_bg.png" />
                            </Setter.Value>
                        </Setter>

                    </Trigger>

                    <Trigger Property="IsChecked" Value="False">
                        <Setter Property="Foreground" Value="LightGray"/>
                    </Trigger>
                </ControlTemplate.Triggers>

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

【问题讨论】:

    标签: wpf styles togglebutton


    【解决方案1】:

    您必须实际使用控件模板中的属性BorderBrushBorderThickness。仅仅设置属性是不够的——框架不会对如何在模板中使用它们做出任何假设。

                <Border x:Name="Border" 
                        Width="62" 
                        Height="19"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
    

    【讨论】:

    • 谢谢 它现在显示边界。但它在各个方面都显示出来。我希望它显示在顶部和右侧。
    • @Vahid 您是否在实例上本地将BorderThickness 设置为“1”?这将覆盖样式值“0 1 1 0”。
    • 对不起,这正是我正在做的:p
    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2018-10-20
    • 2011-03-08
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多