У меня есть следующая (упрощенная) модель представления:
public class ViewModel
{
ObservableCollection<RackViewModel> Racks { get; set; }
}
public class RackViewModel
{
public string Header { get; set; }
public ICommand ActivateCommand { get; }
public ICommand ShowInfoCommand { get; }
}
Конечно, классы модели представления реализуют 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>
Это дает мне следующий результат:
Когда я наведите курсор мыши над В меню все элементы отмечены одновременно, и я не могу получить доступ к подменю. Я ожидал, что это будет следующим:
Кто-нибудь знает, что я сделал не так?