-1

我正在使用 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元素,这正是我所期望的。TitleCaption

但问题在于MainWindow. 这是一个屏幕截图: ![Visual Studio 截图

所以,我的问题是:我该如何清除这个错误?编译器当然不会抱怨任何事情,所以这是一个设计者唯一的问题。我需要用什么属性来装饰我的MenuItems财产吗?还是我错过了什么?

谢谢你,蒂比。

编辑:

注意到MenuItem该类仅使用构造函数发布,缺少 和 的Title属性Caption。为了完整起见,我现在添加了它们。

4

1 回答 1

0

MenuItems 属性中没有“设置”,但您正试图从 xaml 中“设置”它,所以也许这就是原因。

于 2020-04-13T10:01:21.607 回答