c# - 在 C# WPF 中,为什么我的 TabControl 的 SelectionChanged 事件触发得太频繁?

标签 c# wpf tabcontrol tabitem

我有一个选项卡式 GUI,每个选项卡都包含一个框架。在其中一个框架中有一个 DataGrid。当用户选择此选项卡时,我需要对数据网格进行排序,因此我使用 TabControl SelectionChanged 事件来触发排序。但是,每次从 DataGrid 中选择一个项目时都会触发此事件,即使选项卡本身保持不变也是如此。

我已经尝试了许多不同的事件: 获得 TabItem 的焦点 一个 TabItem 的 RequestBringIntoView

但他们似乎都受到这个问题的困扰。这是什么原因造成的?

最佳答案

TabControl.SelectionChangedComboBox.SelectionChanged 是同一事件

来源于Selector.SelectionChanged .

因此,如果您没有在事件处理程序中将事件标记为已处理,它将在树中向上冒泡,并最终到达您的 TabControl,这会导致此“触发太频繁”问题.

将您的事件标记为在您的 ComboBox/ListBox/ListView/您在 DataGrid 中使用的任何其他选择器的 SelectionChanged 中处理,就像这样:

private void MyComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    e.Handled = true;
}

这种不便将消失;)。

关于c# - 在 C# WPF 中,为什么我的 TabControl 的 SelectionChanged 事件触发得太频繁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3659858/

相关文章:

c# - 预测周期性时间序列的趋势线

c# - 如何裁剪带有旋转矩形的图像?

wpf - 如何让WPF项目构建运行?

.net - .NET Framework 4 的向后兼容性

c# - 如何将 WPF 表单添加到选项卡控件的选项卡项中

c# - Dapper 如何通过 DynamicParameter.Get 处理 DBNull

c# - ASP.NET MVC 路由 : Can I have an action name with a slash in it?

c# - 使用 MahApp.Metro 主题自定义 SaveFileDialog

c# - 为什么我的数据绑定(bind) TabControl 看起来不像我的非数据绑定(bind) TabControl?

C# 使用自定义 TabPage 更改 TabControl 中的默认 TabPage