Frage Legen Sie den Fokus auf Textfeld in WPF fest


So stellen Sie den Fokus auf ein TextBox Element in WPF

Ich habe diesen Code:

txtCompanyID.Focusable = true;
txtCompanyID.Focus();

... aber es funktioniert nicht.

Irgendeine Idee?


75
2017-08-28 06:44


Ursprung


Antworten:


In XAML:

<StackPanel FocusManager.FocusedElement="{Binding ElementName=Box}">
   <TextBox Name="Box" />
</StackPanel>

112
2018-02-19 20:03



Versuchen FocusManager.SetFocusedElement

FocusManager.SetFocusedElement(parentElement, txtCompanyID)

44
2017-08-28 06:50



Niemand erklärte bisher, warum der Code in der Frage nicht funktioniert. Meine Vermutung ist, dass der Code im Konstruktor des Fensters platziert wurde. Aber zu diesem Zeitpunkt ist es zu früh, um den Fokus zu setzen. Es muss getan werden, sobald das Fenster für die Interaktion bereit ist. Der beste Ort für den Code ist das Loaded-Ereignis:

public KonsoleWindow() {
  public TestWindow() {
    InitializeComponent();
    Loaded += TestWindow_Loaded;
  }

  private void TestWindow_Loaded(object sender, RoutedEventArgs e) {
    txtCompanyID.Focus();
  }
}

30
2017-07-04 09:17



txtCompanyID.Focusable = true;
Keyboard.Focus(txtCompanyID);

msdn:

Es kann nur ein Element auf dem geben   gesamter Desktop mit Tastaturfokus.   In WPF das Element mit Tastatur   Fokus wird IsKeyboardFocused gesetzt haben   um wahr zu sein.

Sie könnten nach der Einstellung Linie brechen und überprüfen Sie den Wert von IsKeyboardFocused Eigentum. Überprüfen Sie auch, ob Sie diese Linie wirklich erreichen oder vielleicht setzen Sie ein anderes Element, um danach den Fokus zu bekommen.


20
2017-08-28 06:53



Versuche dies : MyTextBox.Focus ( );


17
2018-03-07 14:40



Nichts davon funktionierte für mich, da ich ein Raster anstelle eines StackPanels verwendete.

Ich habe dieses Beispiel endlich gefunden: http://spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/

und änderte es zu diesem:

Im Abschnitt "Ressourcen":

    <Style x:Key="FocusTextBox" TargetType="Grid">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=textBoxName, Path=IsVisible}" Value="True">
                <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=textBoxName}"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

In meiner Rasterdefinition:

<Grid Style="{StaticResource FocusTextBox}" />

8
2018-06-01 10:33