WPF DataGrid绑定的问题

在设置DataGrid中的一列为ComboBox样式后,想实现效果为:打开下拉列表后显示一组数据,用了2种方法绑定数据。

1.用数组,MSDN中http://msdn.microsoft.com/zh-CN/library/ms748365.aspx有示例可以实现效果:

 

Public Sub New()
 MyBase.Add(New PersonName("Willa", "Cather"))
 MyBase.Add(New PersonName("Isak", "Dinesen"))
 MyBase.Add(New PersonName("Victor", "Hugo"))
 MyBase.Add(New PersonName("Jules", "Verne"))
End Sub

 

 

但问题是:其数组值如何动态增减变换?下面是我用了个笨方法但还是行不通,请给意见。

 

Dim 数组() As String = ({"Willa", "Isak", "Victor"})'这样可以灵活变换数值
For i As Integer = 1 To 数组.Length - 1
  MyBase.Add(New PersonName(数组(i).ToString))
Next

 

 

 2.用绑定,但点击选中下拉列表中的值离开单元格焦点后,其单元格的内容不显示其选择的内容却显示成了文字:System.Data.DataRowView请教问题出在那里?

 

复制代码

<DataGridTemplateColumn.CellEditingTemplate >
 <DataTemplate >
   <ComboBox SelectedItem="{Binding 字段1}"
             DisplayMemberPath="字段2"
             ItemsSource="{Binding Source={StaticResource DataSet1}, Path=表1}">
   </ComboBox>
 </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>


沧海一幻觉
浏览 740回答 2
2回答

忽然笑

SelectedItem="{Binding 字段1}"感觉你这个绑定的不对!每个Item对应的应该是DataSet1的一项,而不是某个字段吧!类型不匹配了,显示当然不正确啦!也不知道我这么想的对不对。

波斯汪

既然使用了ObservableCollection<T>,就应该能够解决你的第一个问题~了解一下MVVM,你会发现很容易的
打开App,查看更多内容
随时随地看视频慕课网APP