如何将ComboBox或ComboboxEdit绑定到DataTable

时间:2009-11-16 08:16:41

标签: wpf winforms combobox datatable

任何人都可以帮我设置数据表中的组合框或组合框编辑值吗? 在WinForms中它是这样的:

DataSet dataBases = GetDatabases();

if ((dataBases != null) && (dataBases.Tables[0].Rows.Count > 0))
{
    comboBoxDataBases.DisplayMember = "DbName";
    comboBoxDataBases.DataSource = dataBases.Tables[0];

    if (comboBoxDataBases.FindStringExact(tempDBName) > 0)
    {
        comboBoxDataBases.SelectedIndex = comboBoxDataBases.FindStringExact(tempDBName);
    }
}
else
{
    comboBoxDataBases.DataSource = null;
}

如何使用WPF执行相同的功能?

任何人都可以张贴一些简单的例子。谢谢。

1 个答案:

答案 0 :(得分:0)

以下是如何在WPF中执行此操作:

<ComboBox
  ItemsSource="{Binding DbTable}" <!-- Get the data from the DataContext -->
  SelectedValuePath="{Binding DbName}" <!-- Only desirable if you want to select string values, not table rows -->
  SelectedValue="{Binding tempDBName, Mode=OneWay}" > <!-- Initialize value -->

  <ComboBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding DbName}" /> <!-- Display the DbName in the dropdown -->
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>

这假设DataContext设置为包含表的对象,对于典型的WPF设计,该表将由包含的模板完成,或者如果在顶层由代码完成:

this.DataContext = new
{
  DbTable = dataBases.Tables[0],
  ...
};

此外,您可以考虑从上面的XAML中删除Mode=OneWay,并让更改ComboBox更新您的“tempDbName”属性。总的来说,这会带来更清晰的实施。