[英]WPF DataGrid Automatically selecting checkbox bug?
我有一个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>
这是正在发生的事情的图片!
第一张图片:仅选择第一行
第二张图片:选择另一张图片看到第三列是自动选中当我向下滚动时,我看到其他一些也被检查了
正如@SajithSageer所说,为DataGrid
设置EnableRowVirtualization= false
可以解决这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.