【发布时间】:2020-01-11 07:51:20
【问题描述】:
从昨天开始,我一直在尝试解决这个问题,但没有任何成功(谷歌搜索)。我在DataGridTemplateColumn 中有一个组合框,当我选择某些内容然后单击另一个单元格时,组合框的内容消失了,但是当再次单击时仍然存在。向下滚动数据网格时,情况类似。
我几乎尝试了我在网上找到的所有东西,但没有任何成功。我不明白为什么会这样。
当我切换到DataGridComboboxColumn 时,一切正常,但在这种情况下我无法实现可搜索(自动完成)组合框。
我在 xaml 中的组合框如下所示:
<DataGrid ItemsSource="{Binding ListOfCars}"
SelectedItem="{Binding SelectedCar, Mode=TwoWay}"
<DataGridTemplateColumn Header="Type">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
Width="150"
IsEditable="True"
IsDropDownOpen="False"
ItemsSource="{Binding Source={StaticResource TypeLists}}"
DisplayMemberPath="Type"
SelectedValuePath="IDType"
SelectedItem="{Binding SelectedType}"
SelectedValue="{Binding IDType,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="False"
IsSynchronizedWithCurrentItem="False">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
SelectedCar 是 Car 类型,ListOfCars 是 List<Car> 类型
SelectedValue (IDType) 是 Car 类中的一个属性。
我想实现两件事:
- 选中后,即使我单击其他单元格,组合框中的项目也会保留。
- 有没有简单的方法来实现自动完成组合框? (我尝试使用
DotNetKit.Wpf.AutoCompleteComboBox,但在 datagrid 外部它的工作原理就像一个魅力,但内部情况与组合框相同......)
【问题讨论】:
-
单元格模板的数据上下文是 Car(Car 类),因此此类必须包含属性 SelectedType 才能工作。是这样的吗?
-
Car 类包含 IDType 并且 SelectedValue 绑定到此属性
标签: c# wpf combobox datagrid datatemplate