2014-06-16 61 views
0

我有一個TabControl兩個TabItem s。我有一個Thread在第一個標籤中運行。當第一個選項卡失去焦點時,我必須暫停該線程。但是我在TabItemLostFocus事件中遇到了一個小問題。 LostFocus事件不會在第一次觸發TabItem時失去焦點,而是第二次。爲什麼是這樣的,我怎麼讓它第一次開火?TabItem LostFocus事件不是第一次觸發

以下是我的XAML代碼:

<Grid> 
    <TabControl Name="tbc"> 
     <TabItem Name="tabMain" Header="Main" GotFocus="tabMain_GotFocus" LostFocus="tabMain_LostFocus" > 
      <uc:ucMain /> 
     </TabItem> 
     <TabItem Name="tabExplorer" Header="Data Explorer"> 
      <uc:ucExplorer /> 
     </TabItem> 
    </TabControl> 
</Grid> 

在上面的代碼,UC:ucMain是UserControl

+1

在這裏發佈示例XAML代碼來複制您的問題。 –

回答

1

看起來這是一個奇怪的WPF行爲。你可以解決它的力量集中你的第一個TabItem

代碼:當你打開它第一次

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    tabMain.Focus(); 
} 
+0

我已經嘗試將此添加到窗口的構造函數中:'FocusManager.SetFocusedElement(tabMain.Parent,tabMain);'。我也嘗試了你的建議。它不工作。 – Abhishek

+0

我在Window_Loaded事件中找到了它。但是在構造函數中不會發生這種情況。 – Abhishek

0

的TabItem沒有焦點。

因此,將焦點集中在TabItem的子元素上,您的情況是ucMain。在XAML本身的tabItem上設置FocusManager.FocusedElement屬性。

<Grid> 
    <TabControl Name="tbc"> 
     <TabItem Name="tabMain" Header="Main" 
       GotFocus="tabMain_GotFocus" 
       LostFocus="tabMain_LostFocus" 
       FocusManager.FocusedElement="{Binding ElementName=ucMain}" > 
      <uc:ucMain x:Name="ucMain"/> 
     </TabItem> 
     <TabItem Name="tabExplorer" Header="Data Explorer"> 
      <uc:ucExplorer /> 
     </TabItem> 
    </TabControl> 
</Grid> 
相關問題