wpf 多选框 使用滚动条造成选中和取消选中

操作顺序:

1、手动选中 多选框,每列3个

2、滚动鼠标滚轮或下拉滚动条

3、返回查看之前选中的多选框。

问题的现象:

1、对于DataGridTemplateColumn 选中效果被丢失,剩余最后选中的行保持选中状态

2、对于DataGridCheckBoxColumn选中效果未丢失,滚动时有拖影效果

补充:

1、不使用DataGridCheckBoxColumn的原因是 DataGridCheckBoxColumn列需要单击2次才能选中

2、DataGridTemplateColumn 选中的行被隐藏会触发unchecked事件,造成选中的数据不被记录

3、如果考虑使用ScrollViewer如何保证列头不被看不到

对于DataGrid中以上2中checkbox的使用,不知是否有更优方案,希望得到各位高手的指点。

xaml代码:
<Grid Margin="0,0,45,17">
<Grid.RowDefinitions>
<RowDefinition Height="auto" ></RowDefinition>
</Grid.RowDefinitions>
<DataGrid Width="400" Height="400" AutoGenerateColumns="False" Name="dg" Grid.RowSpan="1" VerticalScrollBarVisibility="Auto" MouseWheel="dg_MouseWheel">
<DataGrid.Columns>

<DataGridCheckBoxColumn Binding="{Binding 1}" Width="auto" Header="DataGridCheckBoxColumn" >

</DataGridCheckBoxColumn>

<DataGridTemplateColumn Width="auto">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock>DataGridTemplateColumn</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>

<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding 2}" Unchecked="CheckBox_Unchecked_1" Checked="CheckBox_Checked_1"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

</Grid>




public Window1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("1", typeof(Boolean));
dt.Columns.Add("2", typeof(Boolean));
for (int i = 0; i < 200; i++)
{
DataRow dr= dt.NewRow();
dr[0] = false;
dr[1] = false;
dt.Rows.Add(dr);
}
dg.ItemsSource = dt.DefaultView;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值