将listview中的组合框绑定到集合

时间:2012-08-29 11:06:43

标签: c# wpf xaml listview combobox

这是我的对象模型

private class ShellItem
{
    public string Name { get; set; }

    public string Command { get; set; }

    public List<ShellMenu> ShellMenus { get; private set; }

    public ShellItem()
    {
        ShellMenus = new List<ShellMenu>();
    }
}


public class ShellMenu
{
    public string ExtName;

    public string KeyName;

    public string FileType;

    public string MenuName { get; set; }

    public string Command { get; set; }

}

这是我的xaml。

<ListView Name="listViewRightClick" HorizontalAlignment="Stretch" Height="Auto" Margin="10,10,26.667,107.667" VerticalAlignment="Stretch" Width="Auto">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="200" Header="Name" DisplayMemberBinding="{Binding Name}"/>
                    <GridViewColumn Width="600" Header="Command" DisplayMemberBinding="{Binding Command}"/>
                    <GridViewColumn Width="200" Header="FileTypes">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <ComboBox ItemsSource="{Binding ShellMenus}"
                                          SelectedValue="{Binding MenuName}"
                                          Margin="-6, 0, -6, 0"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>

我的问题不是显示shellMenu的MenuName,而是在组合框的每个项目上显示MyNamespace.ShellMenu。

2 个答案:

答案 0 :(得分:4)

SelectedValue仅适用于选择,请使用DisplayMemberPath进行显示。

DisplayMemberPath="MenuName"

答案 1 :(得分:0)

您需要在DisplayMemberPath中指定ComboBox

<ComboBox 
    ItemsSource="{Binding ShellMenus}"
    SelectedValue="{Binding MenuName}"
    DisplayMemberPath="MenuName"
    Margin="-6, 0, -6, 0"/>