Tamam, bu yüzden bu soruya takıntılı oldum, ve burada Arama Kutusu'nu kullanırken bir çözüm. Ben, Kısacası MSDN ve GitHub
üzerinde tam örnek yüklenen Davranış SDK ve ve InvokeCommand kullanın ve ardından yeni özelliklerini InputConvert ve InputConverterParameter kullanarak ne gerekiyorsa veri kapmak için bir dönüştürücü kullanın ettik.
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>
Dönüştürücü:
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, Type targetType, object parameter, string language)
{
return value;
}
}
Mainpade codebehind - tabii ki bir VM içinde istiyorum :)
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)
{
}
}
uçtan uca tam bir yürüyüş yukarı yazdım benim blogum, ama yukarıdaki gerçekten ihtiyacınız olan her şey :)
Telefonumda bu yüzden bu mesajı yanıt yerine yorum olarak ekleyin. MVVM Light'da EventToCommand'a bir göz atın. Thats benzer bir durumda ne yaptım. hasta bilgisayarımı tut ve daha sonra bir örnek oluştur, ama aceleniz varsa, bu size bir başlangıç vermelidir. –
Sıralandı mı? –