2011-02-18 124 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集合用於此集。