Pertanyaan Atur fokus pada textbox di WPF


Bagaimana mengatur fokus pada suatu TextBox elemen dalam WPF

Saya punya kode ini:

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

... tetapi itu tidak berhasil.

Ada ide?


75
2017-08-28 06:44


asal


Jawaban:


Di XAML:

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

112
2018-02-19 20:03



mencoba FocusManager.SetFocusedElement

FocusManager.SetFocusedElement(parentElement, txtCompanyID)

44
2017-08-28 06:50



Tidak ada yang menjelaskan sejauh ini mengapa kode dalam pertanyaan itu tidak berfungsi. Tebakan saya adalah bahwa kode itu ditempatkan di konstruktor Window. Tetapi saat ini terlalu dini untuk menetapkan fokus. Itu harus dilakukan begitu Window siap untuk interaksi. Tempat terbaik untuk kode adalah acara Loaded:

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:

Hanya ada satu elemen di   Seluruh desktop yang memiliki fokus keyboard.   Di WPF, elemen yang memiliki keyboard   fokus akan memiliki set IsKeyboardFocused   menjadi kenyataan.

Anda bisa istirahat setelah garis pengaturan dan memeriksa nilai IsKeyboardFocused milik. Juga periksa apakah Anda benar-benar mencapai garis itu atau mungkin Anda mengatur beberapa elemen lain untuk mendapatkan fokus setelah itu.


20
2017-08-28 06:53



Coba ini : MyTextBox.Focus ( );


17
2018-03-07 14:40



Tak satu pun dari ini bekerja untuk saya karena saya menggunakan grid daripada StackPanel.

Saya akhirnya menemukan contoh ini: http://spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/

dan mengubahnya menjadi ini:

Di bagian 'Sumber Daya':

    <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>

Dalam definisi grid saya:

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

8
2018-06-01 10:33