У меня есть DataGrid
и загрузка некоторых данных нестандартного типа. Также есть Checkbox column
. Когда флажок установлен, текущие данные строки берутся с помощью следующего кода. Для первого флажка это нормально.
Затем я проверяю другой флажок, и он проверяется, но когда я прокручиваю данные, я вижу некоторые другие строки флажок проверяется автоматически ! И когда я снова поднимаюсь, флажок, который я выбрал первый раз, теперь не отмечен, а некоторые другие выбираются автоматически!
Код, который я использую для проверенного события.
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
var selectedOrder = MyDataGrid.SelectedItem as AutoOrderClass;
if (selectedOrder != null)
{
var order = SelectedOrdersList.FirstOrDefault(x => x.VendorName == selectedOrder.VendorName);
if (order == null)
{
OrdersCount++;
TotalOrders.Text = "Total Orders : " + OrdersCount;
}
SelectedOrdersList.Add(selectedOrder);
}
}
А это Xaml
<DataGrid x:Name="MyDataGrid" VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True"
AutoGenerateColumns="False"
HorizontalScrollBarVisibility="Auto" Height="{Binding ActualHeight, ElementName=DataGridContainerPanel}">
<DataGrid.Columns>
<DataGridCheckBoxColumn x:Name="CheckBoxColumn" Header="Select">
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Event="CheckBox.Checked" Handler="CheckBox_Checked"/>
<EventSetter Event="CheckBox.Unchecked" Handler="CheckBox_Unchecked"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
<DataGridTextColumn Header="Item Name" Width="120" Binding="{Binding Name}"></DataGridTextColumn>
<DataGridTextColumn Header="Description" IsReadOnly="True" Width="*" Binding="{Binding Description}"></DataGridTextColumn>
<DataGridTextColumn Header="VendorName" IsReadOnly="True" Width="*" Binding="{Binding VendorName}"></DataGridTextColumn>
<DataGridTextColumn Header="Quantity In Hand" Width="100" Binding="{Binding StockQuantity}"></DataGridTextColumn>
<DataGridTextColumn Header="Order QTY" Width="70" Binding="{Binding OrderQuantity,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,NotifyOnTargetUpdated=True}"></DataGridTextColumn>
<DataGridTextColumn Header="Unit Price" Width="80" Binding="{Binding UnitPrice,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,NotifyOnTargetUpdated=True}"></DataGridTextColumn>
<DataGridTextColumn Header="Total Price" Width="70" Binding="{Binding TotalPrice,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,NotifyOnTargetUpdated=True}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
А вот картинка что происходит !
Первая картинка: все отлично, только первый выбранный ряд
Второе изображение: Выберите другое, НО. См., Что третий столбец был автоматически отмечен.
3rd Pic: теперь я прокручиваю вверх и вижу, что первый флажок был автоматически снят, как?
![enter image description here](https://i.stack.imgur.com/mDzqf.jpg)
![enter image description here](https://i.stack.imgur.com/9WW8r.jpg)