Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wpf中的自动完成框焦点_C#_Wpf_Autocomplete - Fatal编程技术网

C# wpf中的自动完成框焦点

C# wpf中的自动完成框焦点,c#,wpf,autocomplete,C#,Wpf,Autocomplete,当我试图专注于我的“autocompletetextbox”时,我失败了,我编写了autocompletetextbox.focus() 但光标仍然聚焦在另一个位置,我应该做什么或写什么才能在其中写入或聚焦?我也经历了同样的事情——它在当前形式下无法正常工作(我希望您谈论的是2010年2月发布的WPFToolkit附带的AutoCompleteBox) 我创建了一个子类: public class AutoCompleteFocusableBox : AutoCompleteBox {

当我试图专注于我的“autocompletetextbox”时,我失败了,我编写了
autocompletetextbox.focus()

但光标仍然聚焦在另一个位置,我应该做什么或写什么才能在其中写入或聚焦?

我也经历了同样的事情——它在当前形式下无法正常工作(我希望您谈论的是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();
    }
}

这会将焦点设置为实际的
文本框
(称为“文本”),它是默认
控制模板的一部分

您似乎必须等待自动完成框先加载。然后设定焦点


\u employeesAutoCompleteBox.Loaded+=
(发件人,e)=>((自动完成框)发件人).Focus();

您必须重写Focus方法才能找到文本框的模板

public class FocusableAutoCompleteBox : AutoCompleteBox
{
    public new void Focus()
    {
        var textbox = Template.FindName("Text", this) as TextBox;
        if (textbox != null) textbox.Focus();
    }
}

这是我设置自动完成文本框控件文本焦点的解决方案:

private void MyPageLoaded(对象发送方,RoutedEventArgs e) {


}这是一个很老的问题,但我想和大家分享我的工作

Keyboard.Focus(autocompletetextbox);
autocompletetextbox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
这在Visual Studio Express 2015 for Windows Desktop上的
WPFToolkit v3.5.50211.1
中有效这是我的解决方案

我发现这比继承类更容易

private void UserControl\u已加载(对象发送方,RoutedEventArgs e)
{
var textBox=FindVisualChild(CodedCommentBox);
textBox.Focus();
}
私有TChildItem FindVisualChild(DependencyObject obj),其中TChildItem:DependencyObject
{
for(var i=0;i
您也可以为此使用扩展方法:

publicstaticvoidforcefocus(此自动完成框)
{
如果(box.Template.FindName(“Text”,box)是TextBox TextBox)
{
textbox.Focus();
}
}

我在有自动完成框但不起作用的类中尝试过这个类,我应该把它放在哪里?在您的XAML中,您使用它而不是
自动完成框
。因此,如果您在名称空间XYZ中有这个类,您可以在XAML文件的根目录中导入该名称空间,并使用类似XYZ的别名,然后使用“我尝试过但混合得到了一个错误”AutoCompleteFocusableBox不支持wpf!!!您是否确实在使用2010年2月的WPFToolkit版本?什么版本的混合?这在Blend 3中适用于我。在blend中加载项目后,您应该能够使用工具箱中的搜索功能找到该控件,并像其他控件一样通过GUI添加该控件。@Jay应该使用该类的什么设置?我只有一个名为BetterACBox的.cs文件,并且在xaml窗口中导入了名称空间,但在中添加控件时出现以下错误:
无法将指定的值分配给集合。使用System.Windows.Controls时,应使用以下类型的uielement
以及如何在方法内部调用它?
Keyboard.Focus(autocompletetextbox);
autocompletetextbox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    var textBox = FindVisualChild<TextBox>(CodedCommentBox);
    textBox.Focus();
}

private TChildItem FindVisualChild<TChildItem>(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<TChildItem>(child);
        if (childOfChild != null)
        {
            return childOfChild;
        }
    }

    return null;
}