我試圖創建集合項目的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>
但我想這樣做的其他方式。我很感興趣,爲什麼其他方式不起作用。