【发布时间】:2011-05-30 09:24:23
【问题描述】:
我有以下类层次结构:
abstract MyWindowBase : System.Windows.Window(即 WPF 之一)
MyWindow : MyWindowBase
我想创建一个 MyWindow 类型的窗口作为 XAML 中的根元素。我发现只有这种方式:
<local:MyWindowBase
x:Class="MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
local:x="clr-namespace:MyProjectNamespace">
<local:MyWindowBase.Resources>...</local:MyWindowBase.Resources>
...
</local:MyWindowBase>
即我将我的抽象类型指定为根元素,这看起来很尴尬。
我也尝试了明显的方法:
<Window
x:Class="MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
...
</Window>
并在代码隐藏中定义MyWindow : MyWindowBase,但它与生成文件中的类定义冲突,即MyWindow : Window。
有没有更好的方法? 谢谢
【问题讨论】:
-
在XAML中你只能创建基本类型的根元素,你的第一种方法是正确的,它有什么问题?你的根元素是抽象类型并没有什么尴尬。
-
@Akash - 没有真正的问题,只是我觉得很奇怪。但我可能是唯一的一个;)
标签: wpf xaml inheritance