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



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

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

所以我什么都不做,就把整页都准备好了。

我的问题是…我能对WPF做同样的事情吗?因为,我想停止使用Winform的应用程序,开始使用WPF。

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

我看到了自定义控件或用户控件,但我需要在继承的控件中放入一些东西来完成屏幕。

是的,这是可能的。您需要将新类声明为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>

WPF不允许以这种方式进行可视化继承。

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

然后,为您的自定义Window创建一个自定义ControlTemplate(使其成为默认值,以便任何自定义窗口都将使用此临时值),其中包括一个页眉或页脚部分,该部分具有您希望在所有窗口上包含的按钮。然后,您可以将这些按钮DataBind绑定到自定义窗口类中的Command(可能通过RelativeSourceSelf绑定)。

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

最新更新