我试图创建集合项目的MenuItems - 并失败。详细:我有一个简单的类ClassA,它定义了一个字符串属性“HeadText”。 在我的MainViewModel中,我定义了一个ObservableCollection属性。收藏品充满了3件物品。现在在XAML中,我想创建这3个类型ClassA的MenuItems。我做了以下内容:从集合创建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; }
}
在此先感谢。
编辑:
如果我写这篇文章,它的工作原理:
<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>
但我想这样做的其他方式。我很感兴趣,为什么其他方式不起作用。