首页 > 解决方案 > 带有 ObservableCollection 的菜单的纯 XAML?

问题描述

这是我的视图模型:

public ObservableCollection<Person> Persons;
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
}

我想用Persons我的所有这些对象创建菜单List

所以XAML我只是创建这个:

<Menu Name="menuPersons" DockPanel.Dock="Top" SnapsToDevicePixels="True">

</Menu>

背后的代码

    MenuItem fileMenuItem = new MenuItem();
    fileMenuItem.Header = "Persons";
    menuPersons.Items.Add(fileMenuItem);

    foreach (Person item in Persons)
    {
          fileMenuItem.Items.Add(new MenuItem
          {
              Header = item.FirstName,
          });
    }

但是正如您所看到的,这看起来很丑陋,所以我的问题是纯粹的XAML方式来做到这一点,以及bind所有我object的所有属性?

更新

所以解决方案对我来说很好,但我只有一个问题:

<Menu.ItemContainerStyle>
    <Style TargetType="{x:Type MenuItem}">
         <Setter Property="Command" Value="{Binding Command}"/>
    </Style>
</Menu.ItemContainerStyle>

我有Style我正在使用的,但我不能使用这个Menu.ItemContainerStyle

我该如何解决这个问题?(请注意,我有另外几个不同Menus的,我用这个Style,但我只需要Command这个Menu

标签: wpfmenuobservablecollectionmenuitemitemsource

解决方案


推荐阅读