autocompletebox专注于wpf
当我尝试专注于我的“autocompletetextbox”时,我失败了,我写了autocompletetextbox.focus()
但是光标仍然集中在另一个我应该做什么或写什么来启用写入或焦点?
我遇到了同样的事情 – 它在当前forms下无法正常工作(我希望你在谈论2010年2月发布的WPFToolkit附带的AutoCompleteBox)。
我创建了一个子类:
public class AutoCompleteFocusableBox : AutoCompleteBox { public override void OnApplyTemplate() { base.OnApplyTemplate(); var textbox = Template.FindName("Text", this) as TextBox; if(textbox != null) textbox.Focus(); } }
这将焦点设置为实际的TextBox
(称为“Text”),它是默认ControlTemplate
一部分。
您必须覆盖Focus方法才能找到Textbox的模板。
public class FocusableAutoCompleteBox : AutoCompleteBox { public new void Focus() { var textbox = Template.FindName("Text", this) as TextBox; if (textbox != null) textbox.Focus(); } }
这是一个非常古老的问题,但我想分享我的解决方法。
Keyboard.Focus(autocompletetextbox); autocompletetextbox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
这适用于Visual Studio Express 2015 for Windows Desktop
上的WPFToolkit v3.5.50211.1
看来你必须先等待自动完成框加载。 然后设置焦点
_employeesAutoCompleteBox.Loaded += (sender, e) => ((AutoCompleteBox)sender).Focus();
这是我的解决方案,
我发现它比inheritance类更容易
private void UserControl_Loaded(object sender, RoutedEventArgs e) { var textBox = FindVisualChild(CodedCommentBox); textBox.Focus(); } private TChildItem FindVisualChild(DependencyObject obj) where TChildItem : DependencyObject { for (var i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) { var child = VisualTreeHelper.GetChild(obj, i); var item = child as TChildItem; if (item != null) { return item; } var childOfChild = FindVisualChild (child); if (childOfChild != null) { return childOfChild; } } return null; }
这是我将焦点设置在AutoCompleteTextBox控件Text上的解决方案:
private void MyPageLoaded(object sender,RoutedEventArgs e){
var myPage = (MyControl)sender; var autoTextBox = (AutoCompleteTextBox)myPage.FindName("AutoTextBox"); if (autoTextBox != null) { var innerTextBox = autoTextBox.textBox; if (innerTextBox != null) { innerTextBox.Focus(); } }
}