我正在尝试使用SearchBox
Windows 8.1 中引入的控件,但我无法弄清楚如何在结果建议中显示图像。出现建议,但图像应保留的空间保持空白:
这是我的 XAML:
<SearchBox SuggestionsRequested="SearchBox_SuggestionsRequested" />
而我背后的代码:
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();
}
}
我错过了什么吗?
一些额外的细节:
我尝试使用 XAML Spy 对其进行调试;每个建议ListViewItem
都Content
设置为Windows.ApplicationModel.Search.Core.SearchSuggestion
. 在这些SearchSuggestion
对象上,我注意到Text
、Tag
、DetailText
和ImageAlternateText
属性设置为正确的值,但Image
属性为空...
编辑:所以显然AppendResultSuggestion
只接受一个实例RandomAccessStreamReference
,而不是任何其他实现IRandomAccessStreamReference
。我认为这是一个错误,因为它与方法签名所传达的内容不一致。我在 Connect 上提交了它,如果你想修复它,请投票给它!