DataGrid DataGridComboBoxColumn在折叠后丢失其值

时间:2017-07-12 12:59:11

标签: c# wpf xaml datagrid datagridcomboboxcolumn

我有一个GridView whith DataGridComboBoxColumn,它第一次正常工作,但是将列visibility设置为collapsed,然后返回{{1} }再次visibility,列失去了它的价值。但是与它有界的财产仍然具有正确的价值。

刷新DataContext时,所有值都正确绑定。

我添加了一个测试转换器,并注意到在折叠列时,会触发回调方法,并且该值为null。

visible

1 个答案:

答案 0 :(得分:1)

我可以重现您的问题。您可以通过处理LoadedComboBox的{​​{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中的对象。