2015-04-29 209 views
2

我正在寫一個wpf程序,需要幾個用戶控件,看起來完全相同,但執行不同的功能。使用winForms,我可以擴展基本控件並添加功能,但據我所知,繼承xaml文件是不可能的。有什麼辦法可以有不同的代碼隱藏類,它們都使用相同的xaml文件進行控制?WPF:使用不同的代碼隱藏相同的xaml文件

+1

也許另一種方法會更好,在控件上創建可能的最小代碼,並使用控件的行爲創建不同的類,然後實例化表單,然後選擇要使用的行爲類。 – Gusman

回答

0

您可能可以使用MVVM模式執行此操作,並創建可能實現相同接口的多個VM。然後XAML視圖可以綁定到您的任何虛擬機,這取決於他們共享相同接口的事實。

在這種方法中你根本不使用代碼。

0

一種方法是使用繼承。一個非常簡單的例子就是帶有一個按鈕的UserControl,它應該在MessageBox中顯示不同的內容。

我們將有這樣的事情:

public abstract class SomeUserControl : UserControl 
{ 
    //declared by XAML (can be made public with x:FieldModifier="public") 
    public Button MyButton; 

    //code-behind 
    public SomeUserControl() { 
     InitializeComponent(); 
    }  
} 

public class MySpecialControl : SomeUserControl { 
     public MySpecialControl() { 
     MyButton.Click += (sender, e) => MessageBox.Show("Bla"); 
     }  
} 

要使用MySpecialControl,只是聲明它在XAML像你和你以前的人做:

<myNamespace:MySpecialControl /> 

請注意,您也可以創建如果行爲變化不是那麼大的話,按鈕點擊的抽象方法。

0

隨着的WinForms,我可以擴展基本控制

而且在WPF一個人不能做類似的?

使用依賴項屬性創建自定義組合控件,該控件將設置控件的模式以適應其目標消費者的需求。

控件可以基於現有的控件或控件。