相关疑难解决方法(0)

附加属性的模板绑定

我的按钮有一个标准样式,但我希望样式的某些部分是可配置的.例如,当按钮触发MouseOver时,我会出现边框,我希望边框颜色可配置.

下面这篇文章:http://www.thomaslevesque.com/2011/10/01/wpf-creating-parameterized-styles-with-attached-properties/我以为我可以使用附加属性和TemplateBinding来实现这一目标.

我创建了以下附加属性:

public static class ThemeProperties
{
    public static Brush GetButtonBorderColour(DependencyObject obj)
    {
        return (Brush)obj.GetValue(ButtonBorderColourProperty);
    }

    public static void SetButtonBorderColour(DependencyObject obj, Brush value)
    {
        obj.SetValue(ButtonBorderColourProperty, value);
    }

    public static readonly DependencyProperty ButtonBorderColourProperty =
        DependencyProperty.RegisterAttached(
            "ButtonBorderColour",
            typeof(Brush),
            typeof(ThemeProperties),
            new FrameworkPropertyMetadata(Brushes.Black, FrameworkPropertyMetadataOptions.Inherits));
}
Run Code Online (Sandbox Code Playgroud)

我这样设置属性:

<Button Style="{StaticResource RedButton}" local:ThemeProperties.ButtonBorderColour="#B20000"/>
Run Code Online (Sandbox Code Playgroud)

我的风格看起来像这样:

<Window.Resources>
    <Style x:Key="RedButton" TargetType="Button">
        <Setter Property="OverridesDefaultStyle" Value="True"/>
        <Setter Property="Margin" Value="2"/>
        <Setter Property="FontFamily" Value="Tahoma"/>
        <Setter Property="FontSize" Value="11px"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="MinHeight" Value="25" />

        <Setter Property="FocusVisualStyle" …
Run Code Online (Sandbox Code Playgroud)

wpf templatebinding attached-properties

22
推荐指数
1
解决办法
1万
查看次数

如何在代码中设置按钮的内部属性?

我有一个像这样的XAML按钮:

<Button x:Name="buttonOK" Content="OK" />
Run Code Online (Sandbox Code Playgroud)

我没有附加XAML样式,也没有资源字典样式.没有外在的东西造型我的按钮,这很好; 这就是我想要的.

我现在想要在后面的代码中更改该按钮的RadiusX和RadiusY,因为我想要一个带有圆边的按钮.我知道System.Windows.Controls.Button没有这些属性,但我知道一个WPF矩形.

我不知道这是否正确; 但WPF按钮控件是由其他控件组成的?对?就像一个矩形和一个文本块或标签,通过设置Button.Content,你实际上是在改变按钮的内部标签的内容.我不确定我的想法有多天真.

底线是我想做这样的事情:

buttonOK.InnerRectangle.RadiusX = 5;
buttonOK.InnerRectangle.RadiusY = 5;
Run Code Online (Sandbox Code Playgroud)

我想在代码中使用它,没有XAML,因为我在不同的XAML文件中有很多按钮,我想通过在代码中调用一个方法而不改变每个XAML文件来绕过它们的边缘.并非所有XAML文件中的所有按钮,只是某些按钮.

我已经在我的所有窗口和用户控件中调用了一个方法,我只想添加圆形边缘样式的按钮到该方法,然后它不会导致繁琐的代码.

c# wpf button

7
推荐指数
1
解决办法
578
查看次数

标签 统计

wpf ×2

attached-properties ×1

button ×1

c# ×1

templatebinding ×1