WPF DataGrid Автоматический выбор флажка ошибка? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть 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

enter image description here enter image description here

1 Ответ

0 голосов
/ 24 апреля 2019

Как @ SajithSageer указанный параметр EnableRowVirtualization= false для DataGrid решает эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...