大佬教程收集整理的这篇文章主要介绍了windows-runtime – Win 8.1 SearchBox – 绑定建议,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在使用Prism for WinRT,并希望将ViewBox和它的事件从获取建议字符串列表的viewmodel中分离出来.
我无法找到将字符串列表绑定到SearchSuggestionCollection或以编程方式添加它们的任何方式,这些方法不涉及使用事件args,这使得单元测试变得非常复杂.
有没有办法绑定/添加不涉及事件args的建议?
简而言之,使用Behavior SDK和InvokeCommand,然后使用转换器通过使用新属性InputConvert和InputConverterParameter来获取所需的任何数据.
XAML:
<SearchBox SearchHistoryEnabled="False" x:Name="SearchBox" Width="500" Height="50"> <SearchBox.Resources> <local:SearchArgsConverter x:Name="ArgsConverter"/> </SearchBox.Resources> <interactivity:Interaction.Behaviors> <core:EventTriggerBehavior EventName="SuggestionsRequested"> <core:InvokeCommandAction Command="{Binding SuggestionRequest}" InputConverter="{StaticResource ArgsConverter}" InputConverterLanguage="en-US" InputConverterParameter="{Binding ElementName=SearchBox,Path=SearchHistoryEnabled}"/> </core:EventTriggerBehavior> </interactivity:Interaction.Behaviors> </SearchBox>
转换器:
public sealed class SearchArgsConverter : IValueConverter { public object Convert(object value,Type targetType,object parameter,string language) { var args = (SearchBoxSuggestionsRequestedEventArgs)value; var displayHistory = (bool)parameter; if (args == null) return value; ISuggestionQuery item = new SuggestionQuery(args.Request,args.QueryText) { DisplayHistory = displayHistory }; return item; } public object ConvertBack(object value,string language) { return value; } }
Mainpade代码隐藏 – 当然你想要在VM中:)
public sealed partial class MainPage { public DelegateCommand<string> Search { get; set; } public DelegateCommand<ISuggestionQuery> SuggestionRequest { get; set; } public MainPage() { InitializeComponent(); Search = new DelegateCommand<string>(SearchedFor,o => true); SuggestionRequest = new DelegateCommand<ISuggestionQuery>(SuggestionRequestFor,o => true); DataContext = this; } private void SuggestionRequestFor(ISuggestionQuery query) { IEnumerable<string> filteredQuery = _data .Where(suggestion => suggestion.StartsWith(query.QueryText,StringComparison.CurrentCultureIgnoreCase)); query.Request.SearchSuggestionCollection.AppendQuerySuggestions(filteredQuery); } private readonly string[] _data = { "Banana","Apple","Meat","Ham" }; private void SearchedFor(string queryText) { } }
以上是大佬教程为你收集整理的windows-runtime – Win 8.1 SearchBox – 绑定建议全部内容,希望文章能够帮你解决windows-runtime – Win 8.1 SearchBox – 绑定建议所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。