【问题标题】:WPF Style ReuseWPF 样式重用
【发布时间】:2010-11-27 18:34:12
【问题描述】:

我对 WPF 场景比较陌生,并且在理解如何在控件之间重用样式时遇到问题。

我的示例情况是这样,我正在制作一个需要切换按钮的控件。我希望这个 ToggleButton 看起来像 TreeViewItem 上的“展开”按钮。如何将 TreeViewItem 的按钮样式应用到我自己的按钮?

从我的搜索中,我感觉不复制 XAML 是不可能的,但我无法向自己证明为什么有人会制作一个有限的 UI 框架。

提前致谢。

【问题讨论】:

    标签: wpf


    【解决方案1】:

    我不确定是否有一种方法可以从某些东西中检索默认样式/模板并将其应用于 XAML 中的另一个控件,尽管您可以在代码中使用它。尽管这会带来一个问题,即您只想获取模板的按钮部分,并且编写新样式而不是仅仅获取模板的那部分更容易(更不用说更简洁了)。

    重新设置按钮的问题在于,当它们被按下时,它们会回到默认按下的外观,当它们被悬停时也是如此。您要做的是更改按钮的 ControlTemplate。

    当我开始使用 WPF 时,我发现 this tutorial 是对这个过程非常有用的介绍。

    我建议您获取 ShowMeTheTemplate 的副本,以便您访问大多数控件的默认模板,因为这将节省大量基本工作并让您深入了解控件的工作原理。

    创建控件模板(或任何样式/模板)后,您可以将其存储在资源字典中,并通过使用 StaticResource 标记扩展从相关属性引用它来将其应用于控件。

    例子:

    (在资源字典中,例如 App.Resources):

    <Style x:Key="myStyle" TargetType="Button">
        <Setter Property="Width" Value="70" />
    </Style>
    

    用于按钮:

    <Button Style="{StaticResource myStyle}" />
    

    希望这有助于您入门。

    【讨论】:

    • 感谢您的回答!关于 showMeTheTemplate 的提示很有帮助。我认为在为 MVVM 设计的环境中,他们甚至没有考虑分离样式和标记,这很奇怪......
    猜你喜欢
    • 2017-01-09
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2013-03-04
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多