2012-08-03 94 views
1

我开始使用WPF,但我无法找到从窗口继承到另一个窗口的方式。将窗口继承到另一个窗口xaml

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

因此,如果不做任何事情,我已经准备好了整页。

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

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

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

任何人都可以帮助我吗?

谢谢!

+0

你是什么意思?“我需要把东西放在我继承的控件中,以完成屏幕。”? – 2012-08-03 20:34:16

+0

我的意思是,我定义了一个窗口来创建一个头部和底部的一些按钮(例如,创建,取消,刷新,应用等)的对象。 然后,我继承该窗口来创建客户,产品,公司等。所以,我在屏幕的顶部和底部都有信息,我只需添加我需要的特定实体的标签和文本框。 感谢您的意见 – Faabass 2012-08-03 22:15:49

回答

0

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

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

然后,创建一个自定义ControlTemplate(它设置为默认,所以任何自定义窗口将使用此tempalte)为您的自定义Window,其中包括页眉或具有您要包括所有窗口上的按钮页脚部分。然后,您可以将DataBind这些按钮设置为您的自定义窗口类中的Command(可能通过RelativeSourceSelf绑定)。

此方法应该允许您创建具有“共享”页脚但窗口不同的窗口。如果你对WPF相当陌生,这可能有点棘手。另一种方法是创建一个UserControl,它实现了页眉/页脚功能并为按钮操作引发事件,然后将它放在所有窗口中。但在我看来,这种方法未能充分利用WPF的力量,尤其是控件的无目的性质。

2

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

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> 
+0

这对我有效。谢谢! – Val 2018-02-22 06:57:51

相关问题