将焦点设置在WPF中的文本框上
如何设置WPF中的TextBox
元素的焦点
我有这个代码:
txtCompanyID.Focusable = true; txtCompanyID.Focus();
…但它不工作。
任何想法?
在XAML中:
<StackPanel FocusManager.FocusedElement="{Binding ElementName=Box}"> <TextBox Name="Box" /> </StackPanel>
尝试FocusManager.SetFocusedElement
FocusManager.SetFocusedElement(parentElement, txtCompanyID)
txtCompanyID.Focusable = true; Keyboard.Focus(txtCompanyID);
MSDN:
整个桌面上只能有一个键盘焦点的元素。 在WPF中,具有键盘焦点的元素将IsKeyboardFocused设置为true。
您可以在设置行之后中断并检查IsKeyboardFocused
属性的值。 还要检查你是否真的到达那条线,或者你可以设置一些其他的元素来获得焦点。
试试这个: MyTextBox.Focus ( );
目前还没有人解释为什么问题中的代码不起作用。 我的猜测是代码被放置在Window的构造函数中。 但是现在要确定重点还为时过早。 一旦窗口准备好进行交互,就必须完成。 代码的最佳位置是Loaded事件:
public KonsoleWindow() { public TestWindow() { InitializeComponent(); Loaded += TestWindow_Loaded; } private void TestWindow_Loaded(object sender, RoutedEventArgs e) { txtCompanyID.Focus(); } }
这一切都没有为我工作,因为我使用的是网格而不是StackPanel。
我终于find了这个例子: http : //spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/
并将其修改为:
在“资源”部分:
<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>
在我的网格定义中:
<Grid Style="{StaticResource FocusTextBox}" />