我正在使用 Visual Studio 2019 社区处理几个 WPF 项目。一种是控制库,一种是使用控制库的应用程序。
在控件库中,我有一个从类ExteraWindow
派生的System.Windows.Window
类。此类的相关代码如下所示:
namespace Extera.Presentation.Control
{
public class Window : System.Windows.Window
{
static Window()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Window),
new System.Windows.FrameworkPropertyMetadata(typeof(Window)));
}
public Window()
: base()
{
// initialize the MenuItems collection
MenuItems.CollectionChanged += Items_CollectionChanged;
}
public ObservableCollection<MenuItem> MenuItems { get; } = new ObservableCollection<MenuItem>();
private void Items_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// some code here
}
// some more class members here
}
}
该类的代码MenuItem
如下所示:
public class MenuItem
{
public MenuItem()
{
Caption = "";
Title = "";
}
public string Title { get; set; }
public string Caption { get; set; }
}
该类ExteraWindow
在应用程序中使用如下:
<control:Window x:Class="App.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Extera.App.ProjectManager"
xmlns:control="clr-namespace:Extera.Presentation.Control;assembly=Extera.Presentation.Control"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<control:ExteraWindow.MenuItems>
<control:MenuItem Title="aaaa" Caption="bbbb" />
</control:ExteraWindow.MenuItems>
<Border BorderBrush="White" BorderThickness="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Foreground="White">a;osidjflsodjfo;sdjg</Label>
</Grid>
</Border>
</control:ExteraWindow>
代码编译正常并且工作正常。如果我在类的Items_CollectionChanged
方法中设置断点ExteraWindow
,断点会被命中一次,即添加一个带有“aaaa”和“bbbb”的MenuItem
元素,这正是我所期望的。Title
Caption
所以,我的问题是:我该如何清除这个错误?编译器当然不会抱怨任何事情,所以这是一个设计者唯一的问题。我需要用什么属性来装饰我的MenuItems
财产吗?还是我错过了什么?
谢谢你,蒂比。
编辑:
注意到MenuItem
该类仅使用构造函数发布,缺少 和 的Title
属性Caption
。为了完整起见,我现在添加了它们。