Windows 8 无法在windows 8中使用Autocompletebox

Windows 8 无法在windows 8中使用Autocompletebox,windows-8,windows-runtime,windows-store-apps,winrt-xaml,Windows 8,Windows Runtime,Windows Store Apps,Winrt Xaml,我安装了nudget autocomplete toolkit,但不幸的是,我发现该控件没有足够的属性用作autocomplete。它有ItemsSource,但在键入内容时不显示筛选的项目列表。我也在寻找类似textChanged的东西,以便调用我的服务并再次获得结果并绑定itemsource。不确定您使用了什么。也不能告诉你为什么它不起作用。然而,去年我想要AutoCompleteTextBox,结果我自己写了它 你可以在这里找到它。 来自Syncfusion WinRT Studio的Te

我安装了nudget autocomplete toolkit,但不幸的是,我发现该控件没有足够的属性用作autocomplete。它有ItemsSource,但在键入内容时不显示筛选的项目列表。我也在寻找类似textChanged的东西,以便调用我的服务并再次获得结果并绑定itemsource。

不确定您使用了什么。也不能告诉你为什么它不起作用。然而,去年我想要AutoCompleteTextBox,结果我自己写了它

你可以在这里找到它。
来自Syncfusion WinRT Studio的TextBoxExt控件具有足够的功能,可以作为自动完成控件使用。它有超过15个建议模式,包括自定义过滤器选项。希望这有帮助


以下是我在中使用的实现:

XAML:


代码:

公共类FilterContactAction:DependencyObject,IAAction
{
字符串_previousResult=null;
公共对象执行(对象发送器、对象参数)
{
var textbox=发送方作为textbox;
var keyEventArgs=参数为KeyRoutedEventArgs;
var noChanges=textbox.Text=\u先前的结果;
var deletionoccurrent=keyEventArgs.Key==VirtualKey.Back||
keyEventArgs.Key==VirtualKey.Delete;
如果(未发生更改| |删除)
{
返回null;
}
var viewModel=ResourceLocator.Instance[typeof(HomeViewModel)]作为HomeViewModel;
viewModel.CanSearch=FindMatch(文本框,viewModel.Contacts);
返回null;
}
private bool FindMatch(文本框文本框,可观察收集联系人)
{
foreach(触点中的var触点)
{
var suggestionDisplayed=DisplaySuggestion(文本框,联系人);
如果(显示建议)
{
返回true;
}
}
返回false;
}
私有bool显示建议(TextBox TextBox,Windows.ApplicationModel.Contacts.Contact)
{
var characterCount=textbox.Text.Count();
var suggestiondisplated=false;
var isMatch=contact.DisplayName.ToUpper().StartsWith(textbox.Text.ToUpper());
如果(isMatch)
{
textbox.Text=contact.DisplayName;
textbox.SelectionStart=字符计数;
textbox.SelectionLength=textbox.Text.Length-textbox.SelectionStart;
_previousResult=textbox.Text;
suggestionDisplayed=true;
}
显示返回建议;
}
}
xmlns:Interactivity="using:Microsoft.Xaml.Interactivity" 
xmlns:behaviors="using:MyNamespace.Behaviors"
<TextBox x:Name="Searchbox" PlaceholderText="contact's name" Width="250" 
         IsTextPredictionEnabled="False"
         IsSpellCheckEnabled="False"
         VerticalAlignment="Center">

    <Interactivity:Interaction.Behaviors>
        <Core:EventTriggerBehavior EventName="KeyUp">
            <behaviors:FilterContactAction />
        </Core:EventTriggerBehavior>
    </Interactivity:Interaction.Behaviors>
</TextBox>
public class FilterContactAction : DependencyObject, IAction
{
    string _previousResult = null;

    public object Execute(object sender, object parameter)
    {
        var textbox = sender as TextBox;
        var keyEventArgs = parameter as KeyRoutedEventArgs;

        var noChanges = textbox.Text == _previousResult;
        var deletionOccurred =   keyEventArgs.Key == VirtualKey.Back ||
                                keyEventArgs.Key == VirtualKey.Delete;

        if (noChanges || deletionOccurred)
        {
            return null;
        }

        var viewModel = ResourceLocator.Instance[typeof(HomeViewModel)] as HomeViewModel;
        viewModel.CanSearch = FindMatch(textbox, viewModel.Contacts);

        return null;
    }

    private bool FindMatch(TextBox textbox, ObservableCollection<Contact> contacts)
    {
        foreach (var contact in contacts)
        {
            var suggestionDisplayed = DisplaySuggestion(textbox, contact);

            if (suggestionDisplayed)
            {
                return true;
            }
        }

        return false;
    }

    private bool DisplaySuggestion(TextBox textbox, Windows.ApplicationModel.Contacts.Contact contact)
    {
        var characterCount = textbox.Text.Count();
        var suggestionDisplayed = false;

        var isMatch = contact.DisplayName.ToUpper().StartsWith(textbox.Text.ToUpper());

        if (isMatch)
        {
            textbox.Text = contact.DisplayName;
            textbox.SelectionStart = characterCount;
            textbox.SelectionLength = textbox.Text.Length - textbox.SelectionStart;

            _previousResult = textbox.Text;

            suggestionDisplayed = true;
        }

        return suggestionDisplayed;
    }
}