0
我正在實施在我的Metro應用程序內搜索。搜索效果很好,但結果和UI如預期出現,但有一個問題。Metro App OnSearchActivated ProgressRing不顯示
我試圖在搜索之前顯示ProgressRing
並在搜索完成後將其隱藏,但它永遠不會顯示。
我缺少什麼,下面的代碼片段:
protected override void OnSearchActivated(Windows.ApplicationModel.Activation.SearchActivatedEventArgs args)
{
// Some Metro designer generated code here
// Show progress ring
MainPage.Current.ResetProgressRingState(true);
// Bind search results
MainPage.Current.BindSearchResults(args.QueryText);
// Ensure the current window is active
Window.Current.Activate();
// Hide progress ring
MainPage.Current.ResetProgressRingState(false);
}
我懷疑BindSearchResults
方法需要以被期待已久的ProgressRing
正常工作。如果是這樣,那麼最簡單的方法是讓等待,如果沒有請告知我在這裏失蹤。
此方法包含很多UI交互,並且沒有異步調用。我可以將它包裝在等待Task.Run中,但在那裏,我將不得不將所有UI的東西包裝在調度程序.RunAsync調用中。似乎對我來說過分了。有什麼建議麼? – c0D3l0g1c
在該方法中添加了一個await Task.Delay(10)。乾淨,簡單,但不確定是否合適。 – c0D3l0g1c
我不會使用'Task.Delay'。我認爲在該方法中有一些內容需要*時間*,這就是爲什麼您要顯示進度指示器的原因。你應該尋找什麼是佔用時間;常見的罪魁禍首是磁盤或網絡I/O。 –