【发布时间】:2012-07-05 14:35:16
【问题描述】:
XAML中继承是如何实现的?
是否只能继承代码隐藏而不是 .xaml (related question)?将父级包含在子控件的命名空间中是唯一的方法吗?
XAML 中似乎没有一般的“继承”。有questions关于继承UserControl等,但没有一般继承。
问题:
我有 2 个 xaml 文件,File1.xaml 和 File2.xaml,它们非常相似。我可以创建一个SuperFile.xaml 并将以下大部分代码放入其中吗?
<UserControl ... >
<Grid>
<Grid.RowDefinitions ... />
<DockPanel ... >
<ToolBar ... >
<!-- Some Buttons here:
File1.xaml to contain the Buttons "View" and "Export"
File2.xaml to contain the Buttons "Edit" and "Delete"
-->
</ToolBar>
</DockPanel>
<igDP:XamDataGrid MouseDoubleClick="xamDataGrid1_MouseDoubleClick" ... />
</Grid>
</UserControl>
File1.xaml 和 File2.xaml 中唯一不同的地方是:
-
Buttons 在ToolBar中(见代码中的注释) -
XamDataGrid的属性,主要是事件(它们在每种情况下的作用)。
我怎样才能做到这一点?我是否必须分别为两个孩子编写代码隐藏文件?
【问题讨论】:
-
你真的需要继承,还是只是重用同一个类并有一个标志来表明你处于哪种模式?
-
@JoelLucsy 如果只是两个文件的“事件”不同,我可以这样做。如果我使用相同的 xaml,我将如何拥有不同的
Buttons? flag 甚至可以在 xaml 中使用吗? -
当然,将按钮的 Visibility 属性绑定到按钮。您必须使用转换器从 bool 更改为 Visibility 枚举,但有很多这样的例子。
-
@JoelLucsy 我想你的建议在这种情况下会奏效,但我会采用
ResourceDictionary的方式,因为它会帮助我理解如何使用它(至少对于将来的使用) -案子)。谢谢!
标签: c# .net wpf xaml inheritance