我试图创建集合项目的 MenuItems - 并且失败了。详细说明:我有一个简单的 ClassA 类,它定义了一个字符串属性“HeadText”。在我的 MainViewModel 中,我定义了一个 ObservableCollection 属性。该系列包含 3 个项目。现在在 XAML 中,我想为这 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; }
}
提前致谢。
编辑:
如果我写这个,它的工作原理:
<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>
但我想用另一种方式来做。我很感兴趣为什么另一种方式不起作用。