2012-08-29 65 views
0

这里是我的对象模型绑定组合框的集合

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。

+0

我认为,在这个环节上,你可以找到答案:http://social.msdn.microsoft.com/Forums/eu/wpf/thread/5fb63c30-3ce0-406b-b775-875e1250e896 – Chaitali

回答

4

SelectedValue是关于仅选择,使用DisplayMemberPath为显示。

DisplayMemberPath="MenuName" 
+0

它不工作。 –

+0

@RaviPatel:你是否指定了一个绑定?这只是一个成员名称。 –

+0

它现在正在工作,但为什么我们不把它称为DisplayMemberPath =“Binding MenuName”。这是我第一天使用wpf。 –

0

您需要在ComboBox指定DisplayMemberPath

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