我有一个选项卡式 GUI,每个选项卡都包含一个框架。在其中一个框架中有一个 DataGrid。当用户选择此选项卡时,我需要对数据网格进行排序,因此我使用 TabControl SelectionChanged 事件来触发排序。但是,每次从 DataGrid 中选择一个项目时都会触发此事件,即使选项卡本身保持不变也是如此。
我已经尝试了许多不同的事件: 获得 TabItem 的焦点 一个 TabItem 的 RequestBringIntoView
但他们似乎都受到这个问题的困扰。这是什么原因造成的?
最佳答案
TabControl.SelectionChanged
与 ComboBox.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/