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> 
+0

你的XAML似乎还没有真正过帐,你可以再试一次吗? – JustABill 2010-05-20 04:13:50

+0

谢谢。我更新了这篇文章。 – neblinc1 2010-05-20 15:25:15

的问题是,直到你离开细胞和更改提交 我张贴更多细节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选择在这里至关重要,它不会离不开它。