2011-10-12 58 views
1

我查看了几个问题(无论是进出了stackoverflow.com)还是找不到解决我的问题的问题。如果你知道一个,请告诉我。设置键盘专注于未选择TabItem中的子控件

这种情况是这样的:我想设置一个控件,当控件在没有被选中的TabItem中时有键盘焦点。

样品XAML:

<Window x:Class="WPF_Application1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" 
     > 
    <Grid> 
     <TabControl> 
      <TabItem Name="tab1" Header="tab1"> 
        <Button Name="button" Content="set focus" Height="24" Width="57" Click="button_Click" /> 
       </TabItem> 
      <TabItem Name="tab2" Header="tab2"> 
       <TextBox Name="text" Height="23" Width="331" /> 
      </TabItem> 
     </TabControl> 
    </Grid> 
</Window> 

样品XAML代码隐藏:

namespace WPF_Application1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow()   
     { 
      InitializeComponent(); 
     } 

     private void button_Click(object sender, RoutedEventArgs e) 
     { 
      Keyboard.Focus(text); // doesn't work 
      text.Focus(); // doesn't work 
     } 

    } 
} 

有什么建议?

回答

1

我找到了解决方案here。看起来必须选择TabItem,必须调用Window.UpdateLayout()方法,然后在控件上设置焦点。我们可能只是创建一个扩展方法来处理UIElements幕后的这种情况,因为这种行为是我们希望普通焦点工作的方式......