2

我使用实体框架(代码优先)创建 WPF 应用程序。我有这个模型

public class Person 
{
   public int Id {get; set;}
   public string Name {get; set;}
   public virtual Country Country {get ;set;}
}

public class Country
{

   public int Id {get; set;}
   public string Name {get; set;}
} 

我想在 DataGrid 中显示来自 Person 的信息 - 命名人员和命名国家。显示国家名称不起作用。我已经尝试了几个选项,这是最新的,但县名没有显示。

 <DataGrid name ="gridPerson" AutoGenerateColumns="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn 
                                                Binding="{Binding Name}"
                                                Header="Person Name" />
                            <DataGridComboBoxColumn 
                                                    Header="CountryName" 
                                                    SelectedItemBinding="{Binding                                                              County}"
                                                    SelectedValueBinding="{Binding                                                              Path=Id}"
                                                    SelectedValuePath="Name" />

                        </DataGrid.Columns>
           </DataGrid>

后面的代码

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        personContext = new PersonContext();
        personContext.Persons.Load();
        personContext.Counties.Load();
        gridPerson.ItemSource = personContext.Persons.local; 
    }

    public class PersonContext : DbContext
    {

       public DbSet<Person> Persons { get; set; } 
       public DbSet<Country> Countries { get; set; }
    }     

如何在 DataGridComboBoxColumn 中显示我的模型中的国家名称?

4

2 回答 2

1

您需要DisplayMemberPath为 ComboBox 指定。

<DataGrid name ="gridPerson" AutoGenerateColumns="False">
     <DataGrid.Columns>
         <DataGridTextColumn Binding="{Binding Name}" Header="Person Name" />
         <DataGridComboBoxColumn Header="CountryName" SelectedItemBinding="{Binding County}" SelectedValueBinding="{Binding Path=Id}" SelectedValuePath="Name" DisplayMemberPath="Name" />
     </DataGrid.Columns>
</DataGrid
于 2013-07-30T07:59:57.910 回答
0

有一个错字:

SelectedItemBinding="{Binding County}"

应该:

SelectedItemBinding="{Binding Country}"

注意输出窗口中的绑定错误!

于 2013-07-30T10:03:37.273 回答