2012-08-03 116 views
1

我開始使用WPF,但我無法找到從窗口繼承到另一個窗口的方式。將窗口繼承到另一個窗口xaml

現在,我開始在WinForm上創建一個新的應用程序,在該應用程序中創建了一個用於添加/編輯/刪除/諮詢對象的通用窗口。所以窗口有一些按鈕,一個頁眉,一個頁腳,一個背景顏色等。然後,我繼承這個窗口到每個對象的窗口。

因此,如果不做任何事情,我已經準備好了整頁。

我的問題是...我可以用WPF做同樣的事嗎?因爲,我想停止使用Winform進行應用程序並開始使用WPF。

我花了很多時間尋找如何在WPF中做到這一點,但我找不到方法。我看到WPF無法繼承外觀。

我看到了自定義控件或用戶控件,但是我需要將內容放入我繼承的控件中以完成屏幕。

任何人都可以幫助我嗎?

謝謝!

+0

你是什麼意思?「我需要把東西放在我繼承的控件中,以完成屏幕。」? – 2012-08-03 20:34:16

+0

我的意思是,我定義了一個窗口來創建一個頭部和底部的一些按鈕(例如,創建,取消,刷新,應用等)的對象。 然後,我繼承該窗口來創建客戶,產品,公司等。所以,我在屏幕的頂部和底部都有信息,我只需添加我需要的特定實體的標籤和文本框。 感謝您的意見 – Faabass 2012-08-03 22:15:49

回答

0

WPF不允許你以這種方式進行可視化繼承。

我會建議做的是創建一個繼承自Window的自定義類,併爲要在所有窗口上顯示的不同按鈕添加RelayCommand屬性。請撥打RelayCommand執行必要邏輯的虛擬方法。

然後,創建一個自定義ControlTemplate(它設置爲默認,所以任何自定義窗口將使用此tempalte)爲您的自定義Window,其中包括頁眉或具有您要包括所有窗口上的按鈕頁腳部分。然後,您可以將DataBind這些按鈕設置爲您的自定義窗口類中的Command(可能通過RelativeSourceSelf綁定)。

此方法應該允許您創建具有「共享」頁腳但窗口不同的窗口。如果你對WPF相當陌生,這可能有點棘手。另一種方法是創建一個UserControl,它實現了頁眉/頁腳功能併爲按鈕操作引發事件,然後將它放在所有窗口中。但在我看來,這種方法未能充分利用WPF的力量,尤其是控件的無目的性質。

2

是的,這是可能的。你需要聲明你的新類爲公共(實際上是爲了確保這兩個類具有相同的範圍)

public class newWindow : Window 

然後,從您的新類繼承

public partial class TestClass : newWindow 

然後,修改TestClass的XAML文件:

<base:newWindow> 
xmlns:local="clr-namespace:YourNameSpace" 
xmlns:base="clr-namespace:YourNameSpace" 
</base:newWindow> 
+0

這對我有效。謝謝! – Val 2018-02-22 06:57:51