2014-11-14 4 views
-2


Я хочу связать combobox с помощью набора данных, но значения не задаются в выпадающем списке, а вместо этого отображается system.data.datarowview. Я ищу это, и ни один из ответов не подходит. Я использую следующий код
Ошибка при привязке combobox в wpf

if (ds.Tables[0].Rows.Count > 0) 
{ 
    cmb_usrname.ItemsSource = ds.Tables[0].DefaultView; 
    cmb_usrname.DisplayMemberPath = ds.Tables[0].Columns["usrName"].ToString(); 
    cmb_usrname.SelectedValuePath = ds.Tables[0].Columns["userId"].ToString(); 
} 

XAML

<ComboBox Height="23" HorizontalAlignment="Left" Margin="129,53,0,0" Name="cmb_usrname" VerticalAlignment="Top" Width="140" ItemsSource="{Binding}"/> 


спасибо,
sivajith

ответ

0

Вам нужно установить DisplayMemberPath и SelectedValuePath именам столбцов

cmb_usrname.DisplayMemberPath = "usrName"; 
cmb_usrname.SelectedValuePath = "userId"; 

, так как это фиксировано вы могли бы также сделать это в XAML

<ComboBox ... DisplayMemberPath="usrName" SelectedValuePath="userId"/> 
+0

Я сделал это .. но без изменений .. – Sivajith

+0

Итак, он по-прежнему отображает 'System.Data.DataRowView'? Оба метода отлично работают для меня. Убедитесь, что это действительно установлено. – dkozl

+0

Это происходит, когда тема применяется. В другом случае combobox отображает все данные. – Sivajith

0

Я считаю, что это уже был дан ответ. Посмотрите, пожалуйста, на одном из моих ответов на эту проблему Binding Datasource View to Datagrid in WPF
WPF DataTrigger doesn't work.

Блики:
1) Ваша поддержка CS-файл должен реализовать INotifyPropertyChanged
2) В файле xmal установить DataContext="{Binding RelativeSource={RelativeSource Self}}"
3) В вашем комбобоксе установить CS файл itemsSource="{Bind SomeProperty}"
4) В вашей поддержке имеет свойство ObservableCollection<SomeType>
5) Когда свойство прибудет Обновит ed call NotifyPropertyChanged

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