2010-07-07 5 views
4

Я создал WPF Windowподклассы WPF Window

чем я изменила свое определение класса для:

public partial class myWindow : mySubclassedWindow 

компилятора бросает:

«частичных деклараций 'MyWindow' не должен указывать разные базовые классы "

myWindow.Xaml:

x:Class="WpfGridtest.myWindow" 

поэтому где-то есть еще один частичный класс, который наследуется от «окна», но я не могу его найти. Как я могу переопределить мой случай для использования подкласса?


спасибо, Jon, в этом была проблема. также нашел эту полезную статью: http://geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx

ответ

7

Это было бы в декларации самого myWindow - дизайнер будет генерировать другую половину парциального типа на основе XAML, на основе вашего типа элемента.

Вместо этого вы можете использовать элемент <mySubclassedWindow>, если вы дадите ему соответствующее пространство имен и ссылки на сборку.

EDIT: Хорошо, вот краткий пример в проекте 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, вы имеете в виду <часть окна в самом начале файла? как я могу изменить это, чтобы использовать подклассовую версию? –

+0

@Sonic: Да, вот что я имею в виду. И вам нужно будет изменить его, чтобы ссылаться на ваш подклассов, а не на «Окно». Я просто пытаюсь придумать короткую демонстрацию ... –

+0

@JonSkeet Очень интересно вести себя с этим решением, используя EnhancedWindow в XAML, не дает intellisense, это делает, если EnhancedWindow ссылается на внешнюю сборку. –