Ich versuche, die SearchBox
Steuerung in Windows 8.1 eingeführt, aber ich kann nicht herausfinden, wie das Bild in den Ergebnisvorschlägen angezeigt wird. Die Vorschläge erscheinen, aber der Raum, in dem das Bild bleibt leer sein sollte:Bild nicht gezeigt für Ergebnisvorschläge in SearchBox
Hier ist meine XAML:
<SearchBox SuggestionsRequested="SearchBox_SuggestionsRequested" />
Und mein Code hinter:
private async void SearchBox_SuggestionsRequested(SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
{
var deferral = args.Request.GetDeferral();
try
{
var imageUri = new Uri("ms-appx:///test.png");
var imageRef = await StorageFile.GetFileFromApplicationUriAsync(imageUri);
args.Request.SearchSuggestionCollection.AppendQuerySuggestion("test");
args.Request.SearchSuggestionCollection.AppendSearchSeparator("Foo Bar");
args.Request.SearchSuggestionCollection.AppendResultSuggestion("foo", "Details", "foo", imageRef, "Result");
args.Request.SearchSuggestionCollection.AppendResultSuggestion("bar", "Details", "bar", imageRef, "Result");
args.Request.SearchSuggestionCollection.AppendResultSuggestion("baz", "Details", "baz", imageRef, "Result");
}
finally
{
deferral.Complete();
}
}
Bin ich fehlt etwas?
Einige zusätzliche Details:
Ich versuchte es mit XAML Spy zu debuggen; Jeder Vorschlag ListViewItem
hat seine Content
auf eine Instanz von Windows.ApplicationModel.Search.Core.SearchSuggestion
festgelegt. Auf diesen SearchSuggestion
Objekte, bemerkte ich, dass die Text
, Tag
, DetailText
und ImageAlternateText
Eigenschaften auf ihren korrekten Wert eingestellt werden, aber die Image
Eigenschaft ist null ...
EDIT: Also scheinbar AppendResultSuggestion
akzeptiert nur eine Instanz von RandomAccessStreamReference
, keine andere Implementierung von IRandomAccessStreamReference
. Ich denke, das ist ein Fehler, da er nicht mit dem übereinstimmt, was die Methodensignatur vermittelt. I filed it on Connect, bitte stimme dafür, wenn du es reparieren willst!
den Cursor Locating oben 'ein Drücken der Taste' F12' Taste StorageFile', die Deklaration von 'StorageFile' zeigt. Anscheinend 'StorageFile' implementiert bereits' IRandomAccessStreamReference', warum ist eine andere Methode erforderlich? – kiewic
@Kiewic eine sehr gute Frage, auf die ich keine Antwort habe. Alles, was ich weiß, ist, dass nicht alle Implementierungen von 'IRandomAccessStreamReference' gleich sind und dass' RandomAccessStreamReference' eher "leichtgewichtig" sein soll, also verwende ich es (und gut, es funktioniert;)). Vielleicht sollte es eine SO Frage sein ... – madd0
Es funktioniert, danke !! Ich war mir sicher, dass es mit 'StorageFile' arbeiten sollte, da es' IRandomAccessStreamReference' implementiert. Ich hatte auch versucht, meine eigene Implementierung zu erstellen, aber es hat auch nicht funktioniert. –