实现自己的窗口边框和标题栏最经济的方法是什么?

时间:2013-04-23 00:29:38

标签: wpf customization

我是WPF的新手,我正坐在这里,试图找出应用程序的最佳方法。

标题栏不是客户区的一部分,所以我正在制作自己的标题栏。

最简单的方法是将它变成某种资源以应用于我创建的所有新窗口?

<Application.Resources>
    <Style x:Key="WindowTheme">
        <Setter Property="Window.WindowStyle" Value="None"/>

    </Style>
    <!--Would I create a user control here for the title bar/border and title bar buttons? Or would it be a style?-->
</Application.Resources>

1 个答案:

答案 0 :(得分:0)

在WPF中,有两种使用样式的方法:命名样式和类型样式。命名样式具有x:Key="..."属性。类型化样式没有名称,但是TargetType="..."属性(Rem:命名样式可以并且经常也有TargetType,所以名为样式,未命名< / em>样式会更精确)。类型化样式会自动应用于作用域中的所有控件,类型为TargetType(不是派生类型)。

<Style TargetType="{x:Type Window}">
    <Setter Property="Background" Value="Blue" />
</Style>

要创建自己的窗口,可以将其模板属性设置为样式中的UserControl:

<Style TargetType="{x:Type Window}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>

            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

实现控件模板的专业方法是“从头开始”实现它,这意味着不使用派生自Window的UserControl。为此,您可以定义Window的可视化树,并使用WPF功能 TemplateParts 来定义控件模板的哪个部分负责窗口的功能。

这是一个教程,它描述了你想要做的事情:

CodeProject tutorial