将菜单项绑定到列表

时间:2015-07-10 10:49:23

标签: c# wpf xaml

我有一个包含菜单项名称的字符串列表:

List<string> namesStorage;

如何将此列表绑定为XAML中的集合?
现在我写了这部分,已经有效了:

<StackPanel Orientation="Vertical">
    <MenuItem Header="MenuItem1" Command="{Binding Command1}" />
    <MenuItem Header="MenuItem2" Command="{Binding Command1}" />
</StackPanel>

此项必须有一个命令(视图模型中将设置不同的参数) 但我认为这不是设置XAML中每个MenuItem的好方法 - 现在可以使用两个项目,但我想知道如何对任意数量的菜单项做出通用决策。我创建了一个包含名称但是如何绑定它(并保留命令)的列表?

1 个答案:

答案 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