2010-07-07 123 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