这是我的视图模型:
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
)