Silverlight ComboBox SelectionChanged事件触发两次

时间:2014-02-24 12:53:26

标签: silverlight datagrid combobox

我在DataGrid中使用ComboBox。我正在使用此DataGrid进行“添加”和“编辑”。当我在“编辑”期间在代码中更改ComboBox的值时,SelectionChanged事件将被触发两次。第一次分配正确的值,然后第二次为null分配给ComboBox,它清除我之前设置的数据!! 我无法弄清楚我到底做错了什么。

这是我将ComboBox绑定到模型的XAML片段。

<sdk:DataGridTextColumn x:Name="SlNo" Binding="{Binding SlNo}" Header="sl.no" IsReadOnly="True"/>
                <sdk:DataGridTemplateColumn Header="Activity Type">
                    <sdk:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                        <ComboBox x:Name="ActivityTypeCombo" IsDropDownOpen="True"
                                                  ItemsSource="{Binding AvailableActivityTypes}"
                                  SelectionChanged="ActivityTypeSelectionChanged"
                                  SelectedItem="{Binding SelectedActivityType, Mode=TwoWay}"
                                                  SelectedValue="{Binding Path=Description, Mode=TwoWay}">
                                <ComboBox.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Description}"/>
                                    </DataTemplate>
                                </ComboBox.ItemTemplate>
                            </ComboBox>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellEditingTemplate>
                </sdk:DataGridTemplateColumn>

我设置值的代码段是:

foreach (var claimDetailViewModel in Claims)
{
    claimDetailViewModel.SelectedActivityType =
    _autoFillModel.ActivityTypes.SingleOrDefault(at => at.Id ==    climDetailViewModel.ActivityTypeId);                
}

ClaimDetailsGrid.ItemsSource = Claims;

1 个答案:

答案 0 :(得分:0)

在我看来,使用SelectedItemSelectedValue来控制选择将无法正常工作。 设置SelectedItem后,很可能会触发SelectedValue进行评估,并且由于没有设置SelectedValuePath,因此会产生SelectedItem=null。 尝试删除SelectedValue绑定。