2017-04-15 40 views
1

我目前正在使用WPF和C#創建簡單應用程序(作爲學習練習)。我注意到,我將需要兩個幾乎相同的頁面(相同的用戶控件,相同的列表,按鈕等相同的方法)。將會有所不同的是內容 - 不同的文本,標題,圖像顯示。
避免重複的方法很簡單 - 我將創建一些抽象的基本頁面,這兩個頁面將繼承。但是,我如何避免重複基本上整個XAML代碼?有沒有辦法以文明的方式解決它,或者我應該像洞穴人一樣複製和粘貼它?
非常感謝!如何避免重複性XAML?

+1

這聽起來像一個不同的控制文本,圖像等綁定到視圖模型的屬性的模板。 –

+0

感謝您指點我正確的方向伴侶,我會研究這一點。非常感謝! –

+0

...或用戶控件而不是模板;從本傑明那裏回答很好。 –

回答

4

1.創建用戶控件和重用他們

你不必直接把所有的東西到你的窗口。相反,請創建一個UserControl,並在其中放置類似的控件。然後可以通過更改DataContext或使用DependencyPropertys來區分不同的用例。假設你命名你的UserControl MyUserControl。然後,您可以像這樣在你的窗口:

<local:MyUserControl x:Name="MemberNameCanBeAccessedInCodeBehind" /> 

2.重用代碼隱藏

一兩件事,這是一個大開眼界,我就重用的事實是,XAML文件和它的代碼隱藏文件基本上是同一枚硬幣的兩面。我們回到MyUserControl。在XAML文件中,您有:

<UserControl x:Class="MyUserControl" ... 

並在代碼隱藏你:

public partial class MyUserControl : UserControl 

的事情是:你不必從UserControl繼承!如果你有這樣的鍵綁定或事件處理程序的一些代碼隱藏功能,你可以通過創建自己的自定義用戶控件類重用他們:

public class MyUserControlClass : UserControl 
{ 
    // Everything that you want to reuse! 
} 

現在,您只需更換你的XAML UserControl和代碼隱藏與MyUserControlClass和你可以使用該功能:

<local:MyUserControlClass x:Class="MyUserControl" ... 

public partial class MyUserControl : MyUserControlClass 

的XAML窗口可能會顯示在第一個錯誤,但在編譯時它的工作原理。