コレクション項目の MenuItems を作成しようとしましたが、失敗しました。詳細: 文字列プロパティ 'HeadText' を定義する単純なクラス ClassA があります。私の MainViewModel では、ObservableCollection プロパティを定義しました。コレクションは3点で充実。XAML で、ClassA タイプのこれら 3 つの項目の 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>
しかし、私はそれを別の方法でやりたいと思っています。そして、なぜ他の方法がうまくいかないのか興味があります。