Я попытался создать MenuItems элементов коллекции - и не удалось. В деталях: у меня есть простой класс ClassA, который определяет строковое свойство «HeadText». В моем MainViewModel я определил свойство ObservableCollection. Коллекция заполнена тремя предметами. Теперь в XAML я хочу создать MenuItems этих 3 элементов типа ClassA. Я сделал следующее:Создать MenuItems из коллекции
<Window.Resources>
<CompositeCollection x:Key="CollA">
<ItemsControl ItemsSource="{Binding Path=MItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding HeadText}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</CompositeCollection>
</Window.Resources>
<Grid>
<Menu DockPanel.Dock="Top" ItemsSource="{Binding Source={StaticResource CollA}}"/>
</Grid>
Но я получаю пустой строке меню. Любые идеи, как я могу это сделать?
модели представления и класс ClassA:
public class MainVM
{
public MainVM() {
_mItems.Add(new ClassA() { HeadText = "A" });
_mItems.Add(new ClassA() { HeadText = "B" });
_mItems.Add(new ClassA() { HeadText = "C" });
}
private ObservableCollection<ClassA> _mItems = new ObservableCollection<ClassA>();
public ObservableCollection<ClassA> MItems{
get { return _mItems; }
}
}
public class ClassA
{
public ClassA() { }
public String HeadText { get; set; }
}
Спасибо заранее.
Edit:
Если я пишу это, он работает:
<Menu DockPanel.Dock="Top" ItemsSource="{Binding MItems}">
<Menu.ItemContainerStyle>
<Style TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}">
<Setter Property="Header" Value="{Binding HeadText}"/>
</Style>
</Menu.ItemContainerStyle>
</Menu>
Но я хочу сделать это по-другому. И меня интересует, почему другой способ не работает.