尝试更改tabControl的选定索引时出现问题

| 我面临的问题很烦人。 我有一个带有2 tabItems(Home,Show)的tabControl “主页”选项卡以“可见”开始,并显示为“隐藏” 在家里,我有一个图像,我可以处理MouseLeftButtonDown事件。 此事件应更改Show TabItem的可见性并将其设置为Selected。 在代码中,我有一个tabControl.SelectedIndex = 1; 这将强制tabControl SelectionChangeEvent(我用来更改前景 显示和首页TabItem)。 我面临的问题是,它没有放在传递给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来解决此问题。 这东西怎么了???     
已邀请:
我用一种方法改变了
TabControl
SelectedItem
void open_Click(object sender, RoutedEventArgs e)
并从
<Button Click=\"open_Click\"
<DataGrid MouseDoubleClick=\"open_Click\"
开始。 仅通过添加
e.Handled = true;
在方法ѭ7的末尾,它像问题中提到的F​​otis一样为
MouseDoubleClick
工作。     
您的代码有问题。
private void Main_clientImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)  
{  
    showMenu.Visibility = Visibility.Visible;  
    homeMenu.Visibility = Visibility.Hidden;
    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.Header.Equals(name))  
        {  
            selectedTab = i;  
            item.IsSelected = true; 
            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);
        }
    }
}
在上面的代码中,我正在检查
item.Header.Equals(name)
并设置
item.IsSelected = true
。有时selectionindex不能正常工作。上面的代码应该可以解决您的问题。     
TabControl的SelectedItem属性更改后,需要确保SelectedItem.IsFocused = true。如果不是,则在更改SelectedItem属性之后立即使用SelectedItem.Focus()。就我而言,这很有帮助。     

要回复问题请先登录注册