2009-11-16 6 views
1

Может ли кто-нибудь помочь мне установить значения редактирования combobox или combobox из datatable? В WinForms это было что-то вроде этого:Как связать ComboBox или ComboboxEdit с DataTable

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?

Может ли кто-нибудь опубликовать простой пример. Спасибо заранее.

ответ

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], 
    ... 
}; 

Кроме того, вы можете рассмотреть возможность удаления Mode=OneWay из XAML выше и позволяя изменения в ComboBox обновить свойство «tempDbName». В целом это приводит к более чистой реализации.

Смежные вопросы