我在命名从其基本窗口继承的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();
....
....
....
}
任何建议都会有所帮助。
答案 0 :(得分:17)
您的基本窗口显然,正如错误所述,需要一个公共默认构造函数(一个没有参数),它也可能不是抽象的,因为需要创建它的实例。