在wpf中绑定组合框时出错

时间:2014-11-14 15:29:16

标签: c# wpf xaml wpf-controls


我想使用数据集绑定组合框,但是组合框中没有设置值,而是显示system.data.datarowview。我搜索这个并没有一个答案是正确的。我使用以下代码

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

2 个答案:

答案 0 :(得分:0)

您需要将DisplayMemberPathSelectedValuePath设置为列名

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

因为这是固定的,你可以在XAML

中这样做
<ComboBox ... DisplayMemberPath="usrName" SelectedValuePath="userId"/>

答案 1 :(得分:0)

我相信这已经得到了解答。请查看我对此问题的其他答案之一 Binding Datasource View to Datagrid in WPF
WPF DataTrigger doesn't work.

亮点是:
1)你的支持cs文件需要实现INotifyPropertyChanged
2)在xmal文件中设置DataContext="{Binding RelativeSource={RelativeSource Self}}"
3)在组合框中设置itemsSource="{Bind SomeProperty}"
4)在您的支持cs文件中具有ObservableCollection<SomeType>的属性 5)当房产更新时,请致电NotifyPropertyChanged