我有一个GridView
whith DataGridComboBoxColumn
,它第一次正常工作,但是将列visibility
设置为collapsed
,然后返回{{1} }再次visibility
,列失去了它的价值。但是与它有界的财产仍然具有正确的价值。
刷新DataContext时,所有值都正确绑定。
我添加了一个测试转换器,并注意到在折叠列时,会触发回调方法,并且该值为null。
visible
答案 0 :(得分:1)
我可以重现您的问题。您可以通过处理Loaded
中ComboBox
的{{1}}事件并重新设置CellTemplate
属性来解决此问题:
SelectedValue
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding TestList}"/>
<EventSetter Event="Loaded" Handler="OnLoaded" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
另一种解决方案是将private void OnLoaded(object sender, RoutedEventArgs e)
{
ComboBox cmb = sender as ComboBox;
dynamic dataObject = cmb.DataContext;
cmb.SelectedValue = dataObject.DbId;
}
替换为DataGridComboBoxColumn
。然后,您希望将DataGridTemplateColumn
的{{1}}属性绑定到数据对象的SelectedItem
属性,以便能够显示ComboBox
的{{1}}属性Db
中的对象。