2015-04-29 102 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一个人不能做类似的?

使用依赖项属性创建自定义组合控件,该控件将设置控件的模式以适应其目标消费者的需求。

控件可以基于现有的控件或控件。