【发布时间】:2017-12-16 22:08:40
【问题描述】:
我有一个GridView 和DataGridComboBoxColumn,第一次工作正常,但是当将列visibility 设置为collapsed,然后将visibility 再次返回到visible 时,列丢失它的价值。但是绑定到它的属性仍然具有正确的值。
当刷新 DataContext 时,所有值都会正确绑定。
我添加了一个测试Converter,注意到折叠列时,回调方法被触发,值为null。
<DataGridComboBoxColumn SelectedValueBinding="{Binding DbId}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
Visibility="Visible">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding TestList}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding TestList}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
【问题讨论】:
-
您需要在 TestList 上实现 INotifyPropertyChanged 以便 UI 反映更改。
-
已经实现并且工作正常,更新数据上下文可以正确更新所有值。
-
你能发布更多代码细节吗?我的意思是转换器
-
转换器没有任何逻辑,它只是检查值。折叠列时调用convert back方法,值为null。
-
返回您在转换方法中返回的相同可见性。
标签: c# wpf xaml datagrid datagridcomboboxcolumn