【发布时间】:2020-03-11 11:49:07
【问题描述】:
我有以下(简化的)视图模型:
public class ViewModel
{
ObservableCollection<RackViewModel> Racks { get; set; }
}
public class RackViewModel
{
public string Header { get; set; }
public ICommand ActivateCommand { get; }
public ICommand ShowInfoCommand { get; }
}
viewmodel 类当然实现了INotifyPropertyChanged,为简洁起见,我省略了它。我想在窗口的菜单栏中显示机架。我试过这样:
<Menu DockPanel.Dock="Top">
<MenuItem Header="Racks">
<ItemsControl ItemsSource="{Binding Racks}">
<ItemsControl.ItemTemplate>
<ItemContainerTemplate>
<MenuItem Header="{Binding Header}">
<MenuItem Command="{Binding ActivateCommand}" Header="Activate"/>
<MenuItem Command="{Binding ShowInfoCommand}" Header="Show Information"/>
</MenuItem>
</ItemContainerTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</MenuItem>
</Menu>
这给了我以下结果:
当我将鼠标悬停在菜单上时,所有项目都被同时标记,我无法访问子菜单。我希望它是以下内容:
有谁知道我做错了什么?
【问题讨论】:
-
您的问题是
RackViewModel类不是分层的。 -
@mm8:感谢您的评论。你能告诉我更多关于如何使
RackViewModel分层的信息吗? -
向其添加
IEnumerable<RackViewModel>属性。