如何解决创建不是直接从WPF Window派生的窗口的实例
|| 我具有以下类层次结构:abstract MyWindowBase : System.Windows.Window
(即WPF之一)
MyWindow : MyWindowBase
我想在XAML中创建一个类型为ѭ2AML的Window作为根元素。我发现只有这种方式:
<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>
并在后面的代码中定义了“ 1”,但它与生成的文件“ 6”中的类定义冲突。
有没有更好的办法?
谢谢
解决方法
请查看我最近的一篇文章,其中准确地解释了这种事情-如何从另一页中导出一页(方法完全相同)。
, 没有什么可以阻止您在此处拥有所需的任何层次结构。根元素是基本类型,“ 7”是您当前定义的生成类型。
如果要将特定的类称为
MyWindow
并从MyWindowBase
派生,则第一个示例是正确的:
<local:MyWindowBase
x:Class=\"MyWindow\"
local:x=\"clr-namespace:MyProjectNamespace\">
如果要从MyWindow
派生特定的类,则需要一个不同的类名称:
<local:MyWindow
x:Class=\"MainWindow\"
local:x=\"clr-namespace:MyProjectNamespace\">
, 这是正常用法。实际上,您正在使用Visual Studio或Blend创建的默认类进行相同的操作。
请注意,您是从Window继承的,所以实际的类是MainWindow,但是xaml使用基类Window
C#
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
Xaml
<Window
x:Class=\"MainWindow\"
xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">
...
</Window>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。