C# 使用资源字典中的WindowsStyle并将按钮添加到应用程序中的ControlPresenter

C# 使用资源字典中的WindowsStyle并将按钮添加到应用程序中的ControlPresenter,c#,wpf,xaml,resourcedictionary,contentpresenter,C#,Wpf,Xaml,Resourcedictionary,Contentpresenter,我使用一个资源字典,里面有我所有的样式、图标等等。 现在我想添加我自己的标题栏,实现解决方案的标题、我的图像和ContentPresenter。 使用WindowsStyle时,我希望在此ContentPresenter中添加特定于应用程序的项目,但我不知道如何继续 这是我的窗口样式。在网格中,您将找到我要填充的ContentPresenter 我使用了这样的样式,并尝试编辑模板,例如在标题栏中添加一些按钮 如何在应用程序中使用WindowsStyle并将特定项目添加到标题栏上的空白处?

我使用一个资源字典,里面有我所有的样式、图标等等。 现在我想添加我自己的标题栏,实现解决方案的标题、我的图像和ContentPresenter。 使用WindowsStyle时,我希望在此ContentPresenter中添加特定于应用程序的项目,但我不知道如何继续

这是我的窗口样式。在网格中,您将找到我要填充的ContentPresenter


我使用了这样的样式,并尝试编辑模板,例如在标题栏中添加一些按钮



如何在应用程序中使用WindowsStyle并将特定项目添加到标题栏上的空白处?

由于
窗口只有一个
内容
属性,因此在
控制模板
中包含多个
元素毫无意义

您可能希望创建一个自定义类,该类继承自
窗口
,并添加名为“TitleBarContent”的依赖属性或其他内容。然后,可以向绑定到此属性的模板添加
ContentControl

<ContentControl Content="{TemplateBinding TitleBarContent}" />

可以像往常一样在样式设置器中设置dependency属性的值:

<Style TargetType="{x:Type local:YourWindowClass}" x:Key="newWindow"  BasedOn="{StaticResource tkDarkWindowStyle}">
    <Setter Property="TitleBarContent">
        <Setter.Value>
            <TextBlock>title...</TextBlock>
        </Setter.Value>
    </Setter>
</Style>

标题

显示在
ContentPresenter
中的是窗口的
内容。为什么要创建另一个样式?我在样式中使用了两个
ContentPresenter
。我如何选择哪个
内容
转到第一个或第二个
内容演示者
?创建新样式是我最好的尝试之一。使用两个
ContentPresenter
没有任何意义,因为窗口只有一个
Content
属性。是的,我现在看到了
ContentPresenter
的问题。你对如何达到想要的行为有什么建议吗?当然。创建自定义类并定义依赖项属性。看看我的答案。