问题可能看起来很容易,但我无法得到它,我尝试了我发现的一切。它适用于类的列表,因为我可以绑定我的一个类的属性,但不能绑定一个简单的String的ObservableCollection。
这是我在Xaml中的代码:
<DataGridTemplateColumn x:Name="VT" Header="VT" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding ListOfString}"
SelectedValuePath="ListOfString"
DisplayMemberPath="ListOfString"
ItemsSource="{Binding RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type UserControl}},
Path=DataContext.ListOfString}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我的代码背后的工作正常,因为当我打开下拉列表时,它显示的内容与内部元素一样多,但行是空的。我也尝试使用像here这样的CellEditingTemplate,但在最好的情况下它具有相同的结果。我想我在那些DisplayMemberPath属性和其他属性上出错了,但我看不出我应该进去的内容。
那么如何正确地将我的ObservableCollection绑定到我的ComboBox?
谢谢!
答案 0 :(得分:1)
如果你的ListOfString看起来像这样:
public ObservableCollection<string> ListOfString {get;set;}
然后您应该只删除SelectedValuePath和DisplayMemberPath。因为否则wpf会查找字符串中不存在的Property ListOfString:)
<ComboBox SelectedItem="{Binding ListOfString}"
ItemsSource="{Binding RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type UserControl}},
Path=DataContext.ListOfString}"/>
如果不是这种情况,您应该发布ListOfString属性的代码。
btw你应该重命名SelectedItem属性或集合属性,因为atm都命名为ListOfString。