【发布时间】:2014-08-13 14:29:07
【问题描述】:
我是 WPF 的新手,当用户在我的 tabcontrol 项目之间切换时,我想做一些事情。 正如所料,我遇到了多次触发 selectionchanged 事件的问题,然后我阅读了这篇文章:
In C# WPF, why is my TabControl's SelectionChanged event firing too often?,
我不喜欢第一个解决方案,它需要太多额外代码来处理应用程序中每个选择器的事件。因此,我尝试了这篇文章中的解决方案:
TabControl's SelectionChanged event issue,
但我遇到了一个新问题,我在 stackoverflow 中找不到任何相关帖子。
我遇到的问题是下面的代码没有返回 true:
if (e.Source is TabControl){ // do something }
没有这个:
if (e.Source is TabItem) {// do something}
当我在调试模式下将鼠标悬停在 e.Source 上时,它显示为
{System.Windows.Controls.TabControl Items.Count:5}
如果我尝试在 WPF Tree Visualizer 中查看它,它会告诉我这是我期望的 TabControl。
所以我的问题是,为什么它不返回 true,因为它是 TabControl?
这是我的 SelectionChanged 代码:
void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.Source is TabControl)
{
if (item1.IsSelected)
{
myllist1.DataContext = getList1();
}
else if (item2.IsSelected)
{
mylist2.DataContext = getlist2();
}
else if (item3.IsSelected)
{
mylist3.DataContext = getlist3();
}
else if (item4.IsSelected)
{
mylist4.DataContext = getlist4();
}
}
}
【问题讨论】:
-
您是否尝试使用“sender”而不是“e.Source”?
-
@Xcalibur37 请看我对答案#2的回复
标签: c# wpf events tabcontrol