继承的窗口不能有名字?

时间:2012-07-10 18:31:05

标签: c# wpf xaml inheritance

我在命名从其基本窗口继承的Window时遇到问题, 当我试图给我的窗口命名时,我得到以下错误。

  

BaseWindow类型不能具有Name属性。没有默认构造函数的值类型和类型可以用作ResourceDictionary中的项。

XAML:

<log:BaseWindow 
   x:Class="EtraabMessenger.MainWindow"
   x:Name="main"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:log="clr-namespace:EtraabMessenger.MVVM.View.Controls" 
   xmlns:VMCore="clr-namespace:EtraabMessenger.MVVM.VMCore" 
   VMCore:WindowClosingBehavior.Closing="{Binding DoCloseMainWindowCommand}"
   Height="464" Width="279">

</log:BaseWindow>

编辑:这是我的BaseWindow类

public abstract class BaseWindow : Window, INotifyPropertyChanged
{
    protected BaseWindow()
    {
        // Note (Important) : This message should register on all windows
        // TODO : I'm planning to move this registeration to BaseWindow class
        Messenger.Register<bool>(GeneralToken.ClientDisconnected, DisconnectFromServer);
    }

    protected abstract void DisconnectFromServer(bool isDisconnected);
    protected abstract void RegisterTokens();
    protected abstract void UnRegisterTokens();

    ....
    ....
    ....

}

任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:17)

您的基本窗口显然,正如错误所述,需要一个公共默认构造函数(一个没有参数),它也可能不是抽象的,因为需要创建它的实例。