【问题标题】:Binding DataGridComboBoxColumn with model将 DataGridComboBoxColumn 与模型绑定
【发布时间】:2013-07-30 07:49:27
【问题描述】:

我使用实体框架创建 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 中显示我的模型中的国家/地区名称?

【问题讨论】:

    标签: c# wpf data-binding datagridcomboboxcolumn


    【解决方案1】:

    您需要为 ComboBox 指定DisplayMemberPath

    <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
    

    【讨论】:

      【解决方案2】:

      有错别字:

      SelectedItemBinding="{Binding County}"
      

      应该是:

      SelectedItemBinding="{Binding Country}"
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-28
        • 1970-01-01
        • 2013-03-30
        • 2011-07-10
        • 2013-04-24
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        相关资源
        最近更新 更多