2011-02-18 131 views
3

这是一个很难回答的问题,但我会尽量尝试解释...WPF:如何自定义通用自定义窗口?

我有一个用遍了我的一个应用一个自定义控件窗口。我这样做的原因是因为我想让各种窗口和对话框在我的程序中完全自定义。即,最小化,最大化,关闭按钮和框架都是自定义的。这个窗口在我的generic.xaml中模板化。现在这个工作,这一切都很好。我当时的想法是从http://www.codeproject.com/KB/WPF/CustomFrames.aspx

现在这个自定义窗口的用户用户控制他们的XAML他们基本上使用mywindow的作为他们的根元素:

<MyWindow> 
     .... 
</MyWindow> 

但现在我正在努力do是从用户控件的xaml中将某些元素“注入”到MyWindow中。 MyWindow只需一个容器来托管它们。例如,他们可能想要注入一个工具栏按钮,它出现在最小化按钮旁边。因此,例如,我可能有,做以下(其中mywindow的是根元素)的用户控制:

<MyWindow> 

<MyWindow.ToolBar> 
    <Button x:Name="BlaBla"/> 
</MyWindow.ToolBar> 

</MyWindow> 

这将使“布拉布拉”旁边的最小化按钮,例如。但我想知道是否可以做到这一点。即,整个MyWindow.ToolBar的东西。有没有一个这样的构造,这是一个附加的属性或更奇怪的东西?

+0

您可以添加一些关于如何实现自定义窗口的细节?它是从Window派生的自定义类吗?如何在此自定义窗口上自定义关闭/最小化/最大化按钮? – 2011-02-18 16:48:56

+0

问题不明确。事实上,我认为有很多问题。 1.您想要将某些元素注入到“非客户区域等价物”(这与使用标题和内容属性完成标签控件的操作类似),以及2.使用MyWindow的任何人注入。尝试并打破你的问题。第2点没有任何意义。 – NVM 2011-02-18 17:01:12

回答

1

这绝对是可能的,取决于您选择的DependencyProperty类型。您可以使用IEnumerable并将MyWindow.ToolBar dp绑定到内部ToolBar上的ItemsSource

<ControlTemplate> 
    <!-- ... snipped down to the ToolBar ... --> 
    <ToolBarTray> 
     <ToolBar x:Name="PART_ToolBar" /> 
    </ToolBarTray> 
</ControlTemplate> 

随着OnApplyTemplate相应的代码来拉PART_ToolBar,创造新的BindingItemsSource

编辑:重读你的问题似乎我错过了你想在别处添加这个。如果绑定不是{x:Null},那么我的建议是将此作为object依赖项属性,将ContentPresenter绑定到MyWindow.ToolBar,并将Visibility集合用于此集。