我遇到这个问题的麻烦。 我创建了一个DataGrid,它有DataTemplate Columns。这是XAML的那个
<data:DataGrid x:Name="PortsGrid" Height="124" Margin="23,0,17,2" VerticalAlignment="Bottom" ItemsSource="{Binding PortsGridData, Mode=TwoWay}" AutoGenerateColumns="False" SelectionMode="Single">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Specific port/Range" CanUserResize="False" Width="130" Binding="{Binding Port}"/>
<data:DataGridTemplateColumn Header="Timeout" CanUserResize="False" Width="130" >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="TimeoutComboBox" IsEditable="True" SelectedIndex="{Binding TimeoutIndex}">
<ComboBoxItem Content="First Value" Tag="-1"/>
<ComboBoxItem Content="Second Value" Tag="0"/>
</ComboBox>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTemplateColumn Header="Priority" CanUserResize="False" Width="120">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="PriorityComboBox" SelectedIndex="{Binding PriorityIndex}">
<ComboBoxItem Content="Low" Tag="0"/>
<ComboBoxItem Content="Prio1" Tag="1"/>
<ComboBoxItem Content="Prio2" Tag="2"/>
<ComboBoxItem Content="Prio3" Tag="3"/>
<ComboBoxItem Content="Prio4" Tag="4"/>
</ComboBox>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTemplateColumn Header="Compression" CanUserResize="False" Width="105">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="CompressionComboBox" SelectedIndex="{Binding CompressionIndex}">
<ComboBoxItem Content="On" Tag="1"/>
<ComboBoxItem Content="Off" Tag="0"/>
</ComboBox>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTemplateColumn Header="Protocol" CanUserResize="False" Width="100">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="ProtocolComboBox" SelectedIndex="{Binding ProtocolIndex}">
<ComboBoxItem Content="Proto1"/>
<ComboBoxItem Content="Proto2"/>
</ComboBox>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
此数据网格与ObservableCollection
绑定,如果我在此数据网格中添加一行,则在ObservableCollection中添加一个元素,并添加其默认值,即没有选择值。现在,如果我更改组合框选择然后删除此行,并再次添加此行,组合框将添加其先前的状态,而不是默认状态..为什么会发生这种情况..可能是DataGrid正在存储Combobox表示更好的性能,但如何清除这些值?