[英]TabItem LostFocus Event is not firing the first time
我有一個帶有兩個TabItem
的TabControl
。 我在第一個選項卡中運行了一個Thread
。 當第一個選項卡失去焦點時,我必須暫停線程。 但是我對TabItem
的LostFocus
事件有一個小問題。 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
似乎這是一種奇怪的WPF行為。 您可以通過強制集中第一個TabItem
:
碼:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
tabMain.Focus();
}
第一次打開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>
為第一個TabItem控件名稱=“ tabMain”添加Loaded事件。
在這種情況下,請添加以下提到的行。
tabMain.Focus();
由於TabControl在首次加載時不會將焦點放在第一個Tab項上,因此由於未觸發LostFocus事件,因此不會觸發第一個選項卡,因為要觸發一次LostFocus事件,必須先觸發GotFocus事件。
因此,允許顯式焦點到第一個選項卡項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.