datagrid row和checkbox冲突

qq14923349 2018-01-25 05:27:49
是这样的
我在datagrid的rowstyle里面 将isselected绑定model的isselected属性 双向绑定,目的是实现选中行高亮

然后在datagridtemplatecolumn里面的celltemplate
加了一个checkbox ,为了显示选中checkbox 该行高亮,我将该ischecked 也绑定到model的isselected属性上

但是运行加断点后 勾选checkbox发现isselected属性被触发两次
一次为true 后一次为false

这样子就勾选不上

什么原因导致 有办法避免吗?

我要实现的是选中该行 ,该行的checkbox被勾上,
勾上checkbox的时候 该行也能高亮
因此绑定isselected,但是就是有问题 ,哪不对了?
...全文
515 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq14923349 2018-03-01
  • 打赏
  • 举报
回复
引用 10 楼 duanzi_peng 的回复:
有这种问题,我再测测。
算了 我放弃datagrid了
exception92 2018-03-01
  • 打赏
  • 举报
回复
引用 12 楼 qq14923349 的回复:
[quote=引用 10 楼 duanzi_peng 的回复:] 有这种问题,我再测测。
算了 我放弃datagrid了[/quote] 不要放弃呀。 把 <Setter Property="IsSelected" Value="{Binding IsChecked}"></Setter> 以及 CheckBox的Click事件 去掉。 再把 IsChecked 的绑定改为: IsChecked="{Binding DataContext.IsChecked,RelativeSource={RelativeSource AncestorType=DataGridRow}}"形式。 再在 DataGrid的SelectionChanged事件中类似:

  private void Dg_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count == 1)
            {
                ColorClass colorClass = (ColorClass)e.AddedItems[0];
                colorClass.IsChecked = !colorClass.IsChecked;
            }

        }
qq14923349 2018-02-07
  • 打赏
  • 举报
回复
引用 10 楼 duanzi_peng 的回复:
有这种问题,我再测测。
老大 这个问题还有救吗 被折磨死了 思路很清晰 就是郁闷
exception92 2018-02-02
  • 打赏
  • 举报
回复
有这种问题,我再测测。
qq14923349 2018-02-01
  • 打赏
  • 举报
回复
引用 6 楼 duanzi_peng 的回复:

 <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <CheckBox Margin="12,0,0,0" HorizontalAlignment="Center" Content="{Binding DataContext.Id,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsChecked="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsThreeState="False"   Click="CheckBox_Click"></CheckBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>

  private void CheckBox_Click(object sender, RoutedEventArgs e)
        {
            CheckBox chk = (CheckBox)sender;
            chk.IsChecked = true;
        }
DataGridRow:

    <Setter Property="IsSelected" Value="{Binding IsChecked}"></Setter>
还有个问题 已勾选后 再点击checkbox怎么去不了勾呢
qq14923349 2018-02-01
  • 打赏
  • 举报
回复
引用 6 楼 duanzi_peng 的回复:

 <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <CheckBox Margin="12,0,0,0" HorizontalAlignment="Center" Content="{Binding DataContext.Id,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsChecked="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsThreeState="False"   Click="CheckBox_Click"></CheckBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>

  private void CheckBox_Click(object sender, RoutedEventArgs e)
        {
            CheckBox chk = (CheckBox)sender;
            chk.IsChecked = true;
        }
DataGridRow:

    <Setter Property="IsSelected" Value="{Binding IsChecked}"></Setter>
还真的行了 主要是click事件 厉害
qq14923349 2018-02-01
  • 打赏
  • 举报
回复
引用 6 楼 duanzi_peng 的回复:

 <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <CheckBox Margin="12,0,0,0" HorizontalAlignment="Center" Content="{Binding DataContext.Id,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsChecked="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsThreeState="False"   Click="CheckBox_Click"></CheckBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>

  private void CheckBox_Click(object sender, RoutedEventArgs e)
        {
            CheckBox chk = (CheckBox)sender;
            chk.IsChecked = true;
        }
DataGridRow:

    <Setter Property="IsSelected" Value="{Binding IsChecked}"></Setter>
IsThreeState="False" checkbox有这属性 不加是不是有问题 难道是这个状态导致的bug
exception92 2018-01-30
  • 打赏
  • 举报
回复


<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Margin="12,0,0,0" HorizontalAlignment="Center" Content="{Binding DataContext.Id,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsChecked="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=DataGridRow}}" IsThreeState="False" Click="CheckBox_Click"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>



private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox chk = (CheckBox)sender;
chk.IsChecked = true;
}


DataGridRow:

<Setter Property="IsSelected" Value="{Binding IsChecked}"></Setter>


qq14923349 2018-01-29
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
将该ischecked 也绑定到model的isselected属性上 ->勾选checkbox导致model的isselected为true,导致行被选中,但是最终触发选中的checkbox而不是行,所以焦点又从行转到了checkbox上。 你把行的isselected绑定到ischecked 上,让行根据checkbox的改变来选中,把model的isselected绑定到checkbox的ischecked属性上。
这个焦点顺序能改变吗
qq14923349 2018-01-29
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
将该ischecked 也绑定到model的isselected属性上 ->勾选checkbox导致model的isselected为true,导致行被选中,但是最终触发选中的checkbox而不是行,所以焦点又从行转到了checkbox上。 你把行的isselected绑定到ischecked 上,让行根据checkbox的改变来选中,把model的isselected绑定到checkbox的ischecked属性上。
但是我的需求有个一个 选中行的时候 行的checkbox又要被勾选 我要实现的是选中该行 ,该行的checkbox被勾上, 勾上checkbox的时候 该行也能高亮
exception92 2018-01-29
  • 打赏
  • 举报
回复
将该ischecked 也绑定到model的isselected属性上 ->勾选checkbox导致model的isselected为true,导致行被选中,但是最终触发选中的checkbox而不是行,所以焦点又从行转到了checkbox上。 你把行的isselected绑定到ischecked 上,让行根据checkbox的改变来选中,把model的isselected绑定到checkbox的ischecked属性上。
qq14923349 2018-01-29
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
[quote=引用 2 楼 qq14923349 的回复:] 但是我的需求有个一个 选中行的时候 行的checkbox又要被勾选 我要实现的是选中该行 ,该行的checkbox被勾上, 勾上checkbox的时候 该行也能高亮
是的,把行与checkbox关联起来不就可以了么。 有什么问题?[/quote] 我试过了真不行 行和checkbox同绑定model的一个属性有问题, 而按照你说的 在rowstyle里面把row的isselected绑定到ischecked,勾选时行是高亮 但是选中行时勾不上啊 要不你试下你 有demo就更好了
exception92 2018-01-29
  • 打赏
  • 举报
回复
引用 2 楼 qq14923349 的回复:
但是我的需求有个一个 选中行的时候 行的checkbox又要被勾选 我要实现的是选中该行 ,该行的checkbox被勾上, 勾上checkbox的时候 该行也能高亮
是的,把行与checkbox关联起来不就可以了么。 有什么问题?

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧