WPFToolkit DataGrid:组合框列不会立即更新 selectedvaluebinding
Posted
技术标签:
【中文标题】WPFToolkit DataGrid:组合框列不会立即更新 selectedvaluebinding【英文标题】:WPFToolkit DataGrid: Combobox column does not update selectedvaluebinding immediately 【发布时间】:2011-02-21 15:14:56 【问题描述】:我正在使用 WPF 工具包 DataGrid 和 DataGridComboBoxColumn。一切正常,除了当组合框上发生选择更改时,选定的值绑定源不会立即更新。仅当组合框失去焦点时才会发生这种情况。有没有人遇到这个问题和任何建议的解决方案?
这是该列的 xaml:
<toolkit:DataGridComboBoxColumn Header="Column" SelectedValueBinding="Binding Path=Params.ColumnName, UpdateSourceTrigger=PropertyChanged"
DisplayMemberPath="cName"
SelectedValuePath="cName">
<toolkit:DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="Binding Info.Columns" />
</Style>
</toolkit:DataGridComboBoxColumn.ElementStyle>
<toolkit:DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="Binding Info.Columns" />
</Style>
</toolkit:DataGridComboBoxColumn.EditingElementStyle>
</toolkit:DataGridComboBoxColumn>
【问题讨论】:
您的 XAML 似乎实际上并未发布,您可以再试一次吗? 【参考方案1】:UpdateSourceTrigger=PropertyChanged
选项在这里很重要,没有它就不行。
【讨论】:
【参考方案2】:问题在于,在您离开该单元并提交更改之前,该单元一直处于编辑模式
解决方案:您需要创建自己的列类型来覆盖默认行为
代码:
public class AutoCommitComboBoxColumn : Microsoft.Windows.Controls.DataGridComboBoxColumn
protected override FrameworkElement GenerateEditingElement(Microsoft.Windows.Controls.DataGridCell cell, object dataItem)
var comboBox = (ComboBox)base.GenerateEditingElement(cell, dataItem);
comboBox.SelectionChanged += ComboBox_SelectionChanged;
return comboBox;
public void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
CommitCellEdit((FrameworkElement)sender);
【讨论】:
太棒了...我喜欢这个解决方案。以上是关于WPFToolkit DataGrid:组合框列不会立即更新 selectedvaluebinding的主要内容,如果未能解决你的问题,请参考以下文章
将 WPFToolkit DatePickerTextBox 控件重写为自定义组合框控件
WPF DataGrid ComboBox 导致 InvalidOperationException
WPF DataGrid ComboBox 导致 InvalidOperationException