将窗口继承到另一个窗口xaml

时间:2012-08-03 20:27:01

标签: wpf window base inheritance

我从WPF开始,但我找不到从窗口继承到另一个窗口的方法。

现在,我正在WinForm上启动一个新的应用程序,我在其中创建了一个通用窗口来添加/编辑/删除/查询对象。因此窗户有一些按钮,标题,页脚,背景颜色等。 然后,我将这个窗口继承到每个对象的窗口。

所以没有做任何事情,我已准备好整页。

我的问题是......我可以用WPF做同样的事情吗?因为,我想停止使用Winform进行应用程序并开始使用WPF。

我花了很多时间在WPF中寻找如何做到这一点,但我找不到方法。我看到WPF无法继承外观。

我看到了自定义控件或用户控件,但是我需要将内容放在我继承的控件中以完成屏幕。

任何人都可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

是的,有可能。您需要将新类声明为public(实际上这是为了确保两个类具有相同的范围)

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>

答案 1 :(得分:0)

WPF不允许您以这种方式直观地继承。

我建议做的是创建一个继承自Window的自定义类,并为要在所有窗口上显示的不同按钮添加RelayCommand属性。让RelayCommand调用执行必要逻辑的虚方法。

然后,为您的自定义ControlTemplate创建一个自定义Window(使其成为默认值,以便任何自定义窗口将使用此tempalte),其中包含一个页眉或页脚部分,其中包含您要包含的按钮在所有窗户上。然后,您可以DataBind将这些按钮添加到自定义窗口类中的Command(可能通过RelativeSource Self绑定。

此方法应该允许您创建具有“共享”页脚但内容不同的窗口。如果你是WPF的新手,这可能有点棘手。另一种方法是创建一个UserControl来实现页眉/页脚功能并为按钮操作引发事件,然后将其放在所有窗口上。但是在我看来,这种方法无法利用WPF的强大功能,特别是控制的无形性。