【问题标题】:How do WPF toolbars change their buttons' styles?WPF 工具栏如何更改其按钮的样式?
【发布时间】:2011-05-11 12:26:33
【问题描述】:

在 WPF 中,如果您在 ToolBar 中放置一个 Button,则该按钮会自动获得不同的样式:默认情况下没有边框、不同的悬停效果等。WPF 使用什么机制来实现这一点?

我知道如何重新设置程序中所有按钮的样式,方法是将Style TargetType="Button" 放入 App.xaml 中的资源中。我知道如何通过将相同的Style TargetType="Button" 放入面板的资源中来重新设计单个父面板中的按钮。但我不知道如何使其可重用,以便我可以将其应用于多个不同的面板(但不是整个应用程序)并让它重新设置这些面板中所有按钮的样式。

ToolBar 具有使“适用于我所有的孩子”样式可重复使用的魔力。它是怎么做到的?

【问题讨论】:

    标签: wpf styles toolbar


    【解决方案1】:

    它在PrepareContainerForItemOverride 中应用样式,如下所示:

    protected override void PrepareContainerForItemOverride(DependencyObject element, object item) {
        base.PrepareContainerForItemOverride(element, item);
        FrameworkElement element2 = element as FrameworkElement;
        if (element2 != null) {
            // ...
            ResourceKey name = null;
            if (type == typeof(Button)) {
                name = ButtonStyleKey;
            }
            else if (type == typeof(ToggleButton)) {
                name = ToggleButtonStyleKey;
            }
            else if (type == typeof(Separator)) {
                name = SeparatorStyleKey;
            }
            // ...
             element2.DefaultStyleKey = name;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-15
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      相关资源
      最近更新 更多