代码之家  ›  专栏  ›  技术社区  ›  Andrew Hanlon

WPF样式重用

wpf
  •  1
  • Andrew Hanlon  · 技术社区  · 14 年前

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

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

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

    提前谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Moonshield    14 年前

    我不确定是否有方法从某个对象中检索默认样式/模板并将其应用于XAML中的另一个控件,尽管您可以在代码中使用它。虽然这会带来一个问题,你只想得到模板的按钮部分,更容易(更不用说更干净)只是写一个新的风格,而不是黑客左右,只得到模板的那部分。

    重新造型按钮的问题在于,当按下按钮时,它们将返回到默认的按下外观,与悬停按钮时相同。您要做的是更改按钮的控件模板。

    当我开始在WPF的时候我发现 this tutorial 对这一过程的介绍非常有用。

    我建议您获取showmetemplate的副本,让您能够访问控件的大多数默认模板,因为这将节省许多基本工作,并让您了解控件是如何工作的。

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

    例子:

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

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

    用于按钮:

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

    希望这能帮你开始。