我面临的问题很烦人。
我有一个带有 2 个 tabItems(Home,Show) 的 tabControl 主页选项卡开始为可见并显示为隐藏
在主页中,我有一个图像,我为其处理 MouseLeftButtonDown 事件。此事件应更改 Show TabItem 的可见性并使其成为 Selected。
在代码中我有一个 tabControl.SelectedIndex = 1; 这会强制 tabControl SelectionChangeEvent(我用它来更改 Show 和 Home TabItems 的前景)。
我面临的问题是,它没有将焦点传递给 Show,而是保留在 Home 上。我的代码没有问题,因为在 SelectionChange 事件处理程序的最后一步,这是我的代码执行的最后一个函数,我在 ui 中看到的是正确的。
那么之后会执行什么?有人可以帮忙吗?
private void Main_clientImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
showMenu.Visibility = Visibility.Visible;
setTabSelected("showMenu");
}
public void setTabSelected(String name)
{
for (int i = 0; i tabControl.Items.Count ; i++)
{
TabItem item = tabControl.Items.GetItemAt(i) as TabItem;
if (item.Name.Equals(name))
{
selectedTab=i;
tabControl.SelectedIndex = i;
item.Foreground = new SolidColorBrush(Colors.Black);
}
else
{
item.Foreground = new SolidColorBrush(Colors.White);
}
}
}
private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
for (int i = 0; i tabControl.Items.Count; i++)
{
TabItem item = tabControl.Items.GetItemAt(i) as TabItem;
if (tabControl.SelectedIndex == i)
{
item.Foreground = new SolidColorBrush(Colors.Black);
}
else
{
item.Foreground = new SolidColorBrush(Colors.White);
}
}
}
//编辑:我通过在 MouseLeftButtonDown 事件中添加一个简单的 e.Handler = true 来解决它。这东西有什么问题???