Wpf 为什么在“IsKeyboardFocusWithin”上触发不';当值为false时,是否不工作?

Wpf 为什么在“IsKeyboardFocusWithin”上触发不';当值为false时,是否不工作?,wpf,triggers,eventtrigger,Wpf,Triggers,Eventtrigger,我想更改Textbox.GotFocus和Textbox.LostFocus上的输入语言,因此我执行以下操作: <Style TargetType="{x:Type TextBox}" x:Key="EnglishTextStyle"> <Style.Triggers> <Trigger Property="IsKeyboardFocusWithin" Value="True"> <Setter Prope

我想更改
Textbox.GotFocus
Textbox.LostFocus
上的输入语言,因此我执行以下操作:

<Style TargetType="{x:Type TextBox}" x:Key="EnglishTextStyle">
    <Style.Triggers>
        <Trigger Property="IsKeyboardFocusWithin" Value="True">
            <Setter Property="InputLanguageManager.InputLanguage" Value="en-us" />
        </Trigger>
        <Trigger Property="IsKeyboardFocusWithin" Value="False">
            <Setter Property="InputLanguageManager.InputLanguage" Value="fa-ir" />
        </Trigger>
    </Style.Triggers>
</Style>


它将输入语言更改为
en-us
,但不会将其返回到
fa-ir
,有什么问题吗?

您还需要指定类型:

<Trigger Property="TextBox.IsKeyboardFocusWithin" Value="False">
     <Setter Property="TextBox.InputLanguageManager.InputLanguage" Value="fa-ir" />
</Trigger>

此代码有效。尝试更改Property=“Text”而不是InputLanguageManager.InputLanguage,并且您必须确保使用其他控件。此外,您还可以评估“IsFocused”。