带有ObservableCollection的纯XAML菜单吗?

时间:2018-07-05 06:34:25

标签: wpf menu observablecollection menuitem itemsource

这是我的ViewModel:

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

0 个答案:

没有答案