我从WPF开始,但我找不到从窗口继承到另一个窗口的方法。
现在,我正在WinForm上启动一个新的应用程序,我在其中创建了一个通用窗口来添加/编辑/删除/查询对象。因此窗户有一些按钮,标题,页脚,背景颜色等。 然后,我将这个窗口继承到每个对象的窗口。
所以没有做任何事情,我已准备好整页。
我的问题是......我可以用WPF做同样的事情吗?因为,我想停止使用Winform进行应用程序并开始使用WPF。
我花了很多时间在WPF中寻找如何做到这一点,但我找不到方法。我看到WPF无法继承外观。
我看到了自定义控件或用户控件,但是我需要将内容放在我继承的控件中以完成屏幕。
任何人都可以帮助我吗?
谢谢!
答案 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的强大功能,特别是控制的无形性。