ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – WPF DataGrid SelectionChanged事件取消单元焦点问题

2019-07-04 16:06:30  阅读:199  来源: 互联网

标签:c wpf datagrid


我在datagrid选择更改事件中执行检查.
如果我的条件满足,则应该执行代码并且应该突出显示所选项(或获得焦点),如果条件不满足,则控件应该返回并且
之前选择的项目应保持选中状态.

这里发生的是如果条件不满足所选项目没有改变(这是按照需要工作)但焦点仍然转移到现在选择的单元格,因此单元格选择项目是前一个单元格而焦点对象是解雇事件的单元格.

我已经尝试过datagrid.dispatcher.invoke方法,但这似乎不起作用.
此外,我试图设置datagrid.selectedindex = e.removeditem [0],通过进入连续循环,再次将控件引导到选择更改事件.

请提出建议.

编辑:

dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
   if (!IsDirty) 
   { 
       if (e.AddedItems.Count > 0) 
       { 
          SelectedProfile = e.AddedItems[0] as profile; 
       } 
       if (e.RemovedItems.Count > 0) 
       { 
       } 
   }
   else 
   {
      MessageBox.Show("Save the profile selected", MessageBoxButton.OK, MessageBoxImage.Warning); 
      return; 
   } 
}

解决方法:

防止循环.

void OnSelectionChanged(Object sender, SelectionChangedEventArgs e)
{
    // condition code
    if (conditionFailed)
    {
        datagrid.SelectionChanged -= OnSelectionChanged;
        datagrid.Selectedindex = e.Removeditem[0];
        datagrid.SelectionChanged += OnSelectionChanged;
    }
}

标签:c,wpf,datagrid
来源: https://codeday.me/bug/20190704/1378604.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有