And*_*ers 54 c# wpf tabcontrol tabitem
我有一个标签式GUI,每个标签包含一个框架.在其中一个框架中有一个DataGrid.当用户选择此选项卡时,我需要对datagrid进行排序,因此我使用TabControl SelectionChanged事件来触发排序.但是,每次从DataGrid中选择一个项时,此事件都会触发,即使选项卡本身保持不变.
我尝试了很多不同的事件:GotFocus用于TabItem的TabItem RequestBringIntoView
但他们似乎都遇到了这个问题.是什么造成的?
Arc*_*rus 91
在TabControl.SelectionChanged相同事件作为ComboBox.SelectionChanged
它起源于Selector.SelectionChanged.
因此,如果您没有将事件标记为在事件处理程序中处理,它将冒泡树,并最终到达您的TabControl,这导致这种"解雇太频繁"的问题.
将您的事件标记为在ComboBox/ ListBox/ ListView/您在DataGrid中使用的任何其他选择器的SelectionChanged中处理,如下所示:
private void MyComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
这种不便将消失;).
Tow*_*hid 25
private void tabControlName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.Source is TabControl) //if this event fired from TabControl then enter
{
if (tabItemName.IsSelected)
{
//Do your job here
}
}
}