WPFToolkit的DataGrid:组合框列不更新selectedvaluebinding立即
问题描述:
我使用WPF工具包DataGrid和DataGridComboBoxColumn。一切运作良好,除了在组合框发生选择更改时,选定的值绑定源不会立即更新。只有当组合框失去焦点时才会发生这种情况。有没有人遇到这个问题和任何建议解决方案?WPFToolkit的DataGrid:组合框列不更新selectedvaluebinding立即
这里列的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>
答
的问题是,直到你离开细胞和更改提交 我张贴更多细节AutoCommitComboBoxColumn
解决方案中的单元格保持在编辑模式下:您需要创建自己的列类型以覆盖默认行为 代码:
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);
}
}
+0
太棒了......我喜欢这个解决方案。 – neblinc1 2010-05-20 21:08:47
答
UpdateSourceTrigger =的PropertyChanged选择在这里至关重要,它不会离不开它。
你的XAML似乎还没有真正过帐,你可以再试一次吗? – JustABill 2010-05-20 04:13:50
谢谢。我更新了这篇文章。 – neblinc1 2010-05-20 15:25:15