我在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;
答案 0 :(得分:0)
在我看来,使用SelectedItem
和SelectedValue
来控制选择将无法正常工作。
设置SelectedItem
后,很可能会触发SelectedValue
进行评估,并且由于没有设置SelectedValuePath
,因此会产生SelectedItem=null
。
尝试删除SelectedValue
绑定。