我有一个包含菜单项名称的字符串列表:
List<string> namesStorage;
如何将此列表绑定为XAML中的集合?
现在我写了这部分,已经有效了:
<StackPanel Orientation="Vertical">
<MenuItem Header="MenuItem1" Command="{Binding Command1}" />
<MenuItem Header="MenuItem2" Command="{Binding Command1}" />
</StackPanel>
此项必须有一个命令(视图模型中将设置不同的参数)
但我认为这不是设置XAML中每个MenuItem
的好方法 - 现在可以使用两个项目,但我想知道如何对任意数量的菜单项做出通用决策。我创建了一个包含名称但是如何绑定它(并保留命令)的列表?
答案 0 :(得分:3)
设置正确的DataContext后,这应该有效:
<ItemsControl ItemsSource="{Binding namesStorage}" x:Name="ItemsControlName">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}" Command="{Binding ElementName=ItemsControlName, Path=DataContext.Command1}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
修改:按照评论
中的建议删除了Parent-Stackpanel