2010-07-07 83 views
4

我创建了一个WPF窗口子类WPF窗口

比我修改了它的类定义:

public partial class myWindow : mySubclassedWindow 

编译器会抛出:

“ 'mywindow的' 的分部声明一定不能指定不同基类“

myWindow.Xaml:

x:Class="WpfGridtest.myWindow" 

所以在某个地方,有另一个部分类,从“窗口”继承,但我找不到它。我如何覆盖我的情况使用子类窗口?


感谢乔恩,那就是问题所在。 还发现这是很有帮助的文章: http://geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx

回答

7

这将是myWindow本身的声明 - 设计师将基于该XAML部分类型的另一半,根据您的元素类型。

您可以使用<mySubclassedWindow>的元素代替,只要您给它适当的名称空间和程序集引用即可。

编辑:好的,这是一个简短的例子,在一个名为WpfApplication的项目中。我Window子类:

using System.Windows; 

namespace WpfApplication 
{ 
    public class EnhancedWindow : Window 
    { 
    } 
} 

我的XAML:

<y:EnhancedWindow x:Class="WpfApplication.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:y="clr-namespace:WpfApplication" 
     Title="MainWindow" Height="350" Width="525"> 
</y:EnhancedWindow> 

我的部分类型:

namespace WpfApplication 
{ 
    public partial class MainWindow : EnhancedWindow 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

这一切都建立没有问题。我想这就是你想要做的,对吧?

+0

感谢Jon,你的意思是文件最开始处的 2010-07-07 18:51:11

+0

@Sonic:是的,这就是我的意思。而且你需要修改它来引用你的子类型而不是'Window'。我只是试图想出一个简短的演示... – 2010-07-07 18:53:03

+0

@JonSkeet这个解决方案有一个非常有趣的行为,在XAML中使用EnhancedWindow并不会提供智能感知,如果从外部程序集引用EnhancedWindow,它会执行此操作。 – 2016-04-24 17:45:34