1

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

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

所以什么都不做,我几乎已经准备好了整页。

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

我花了很多时间寻找如何在 WPF 中执行此操作,但我找不到方法。我看到WPF不能继承外观。

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

4

2 回答 2

3

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

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>
于 2015-12-24T08:38:26.987 回答
0

WPF 不允许您以这种方式进行视觉继承。

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

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

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

于 2012-08-03T22:58:09.207 回答