wpf - 带有 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
)
解决方案
推荐阅读
- r - Having trouble reading an .csv database
- ajax - 在 .htaccess 中重写 url 后搜索下拉结果
- c# - C# Active Directory App - How do I store service account credentials?
- android - 如何完成库中的活动并返回到父应用程序?
- android - Android Glide 占位符大小相同,图片大小不同
- javascript - 实现将填充链接的 Jquery Javascript 代码,该链接将确保 ASP.NET MVC 操作重定向到 ASP.NET Web 表单页面
- mysql - 确定 Pocket Books 出版的最贵的书的书名的命令是什么?
- node.js - LoopbackJS 版本 3.x `连接失败:MongoError:身份验证失败。`
- gulp - 带有 node-mysql2 模块的 Gulp 4 任务导致服务器在连接时崩溃
- oracle - Weblogic 服务器无法启动,无法配置域