【问题标题】:How can I base a style on a default control's style?如何将样式基于默认控件的样式?
【发布时间】:2012-05-09 20:17:46
【问题描述】:

我们正在编写 TextBox 的自定义子类,我们只需要更改样式的一些基本部分。现在我们知道,当您继承 Control 时,通常您应该像这样更改元数据...

public class EnhancedTextBox : TextBox
{
    static EnhancedTextBox()
    {
        // Commenting this line out lets this use the default TextBox style.
        DefaultStyleKeyProperty.OverrideMetadata(
            typeof(EnhancedTextBox),
            new FrameworkPropertyMetadata(typeof(EnhancedTextBox)));
    }
}

这会将用于该子类类型的键更改为类型本身,这意味着它不再获得默认的 TextBox 样式。没什么大不了的...我们只是将那行注释掉,它再次起作用,因为键仍然设置为 TextBox 直接使用的值。

但是,我们想知道我们是否确实想要更改样式中的一些内容,而不是整个样式,我们可以简单地创建一个新样式并设置其BasedOn 属性。 ..但是我们在那里设置什么?我们不想手动拉出 XAML 并创建一个新样式,给它一个键,然后使用一个 StaticResource,但我们还没有找到我们可以在那里设置说“这是基于 TextBox风格。

我希望它是简单的,但同样,我们还没有找到它。有人可以帮忙吗?

【问题讨论】:

    标签: wpf inheritance subclass basedon


    【解决方案1】:

    就这样……我找到了。伙计,踢自己,这是显而易见的,我错过了!

    <Style TargetType="{x:Type local:EnhancedTextBox}"
        BasedOn="{StaticResource {x:Type TextBox}}">
    
       ....
    
    </Style>
    

    在这里找到它...WPF style basedon current

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多