Сфокусируйте текстовое поле, используя проблему FocusManager.FocusedElement

Я пытаюсь установить фокус клавиатуры на текстовое поле, которое включено в панель стека. Когда IsEditMode становится истинным, я хочу, чтобы текстовое поле стало по умолчанию сфокусированным.

Я пробовал этот код:

<DataTemplate x:Key="LibraryItemTemplate">
<StackPanel Orientation="Vertical">
    <StackPanel.Style>
       <Style TargetType="StackPanel">
          <Style.Triggers>
               <DataTrigger Binding="{Binding IsEditMode}" Value="True">
                   <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=TxtB}"/>
               </DataTrigger>
          </Style.Triggers>
       </Style>
    </StackPanel.Style>

    <TextBlock x:Name="TxtA" Text="A" />
    <TextBox x:Name="TxtB" Text="B" Visibility="{Binding IsEditMode, Converter={StaticResource BoolVisibilityCollapsed}}"/>
</StackPanel>
</DataTemplate>
....
<ListView x:Name="LibraryListView" SelectedItem="{Binding SelectedItem,   UpdateSourceTrigger=PropertyChanged}" >
<ListView.View>
    <GridView>
        <GridViewColumn CellTemplate="{StaticResource LibraryItemTemplate}"  Width="Auto"/>
    </GridView>
</ListView.View>

Но проблема в том, что мышь не помечает, кажется, фокус клавиатуры находится не в текстовом поле, и мне нужно еще раз щелкнуть мышью на TextBox, чтобы иметь возможность вводить некоторый текст в TextBox.

Любая идея?

1 ответ

Решение

После того, как FocusManager установит фокус, вы должны обработать это событие, и в случае, если вы должны добавить

<TextBox x:Name="TxtB" 
         Text="B" 
         GotFocus="TxtB_GotFocus"  
         Visibility="{Binding IsEditMode
             , Converter={StaticResource BoolVisibilityCollapsed}}"/>

....
private void TxtB_GotFocus(object sender, RoutedEventArgs e)
{
    this.Dispatcher.BeginInvoke((Action)delegate
    {
       Keyboard.Focus(TxtB);
    }, DispatcherPriority.Render);
}

Большое спасибо Дарлин

И я добавляю ответ сам, чтобы удовлетворить предложение Шеридана. Большое спасибо

Другие вопросы по тегам