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