在C#中的Windows應用程序UWP。我有一個方法檢查一個條件,並根據條件,它可能需要向用戶顯示一個列表視圖,以便他們可以從列表中選擇一個項目。在我可能顯示需要運行的列表視圖之後,我在方法中有更多的代碼。然而,因爲listview顯示,我必須等待SelectionChanged事件處理程序觸發,我不知道如何暫停該行上的調用方法,直到完成SelectionChanged的事件處理程序。我沒有做編寫的代碼還,所以這裏是一些pseduo代碼來說明:顯示列表視圖但等到方法之前SelectionChanged事件觸發繼續
private void LookupEmployee(string searchCriteria)
{
List<string> matches = GetEmployeeNameMatchesFromCriteria(searchCriteria);
if(matches.Count == null || matches.Count == 0)
{
//No matches found, warn user
return;
}
if(matches.Count == 1)
{
//We are good, we have just one match which is desirable.
}
if(matches.Count > 1)
{
//This means we have more than one match and we need to popup list view to have user select one
ShowListView(matches);
}
//Process Employee data here.
}
我知道有一個選項是「菊花鏈」,打破了員工數據的最終處理,以另一種方法和呼叫調用即來自ListView的SelectionChanged的事件處理程序。但是,這有兩個問題。首先,如果我只有一場比賽,那麼我將不會顯示列表視圖或獲取SelectionChanged。其次,如果我在方法的最後使用方法的開始處有一堆變量和其他東西,我不想(也不知道如何)將所有這些通過並返回事件處理程序在我需要顯示它的事件中。
我猜我正在尋找的方式是MessageDialog是如何處理的。
var md = new MessageDialog("My Message");
md.Commands.Add(new UICommand("Okay")
{
});
var result = await md.ShowAsync();
if (result.Label == "Okay")
{
DoStuff;
}
凡使用此等待上線:
等待md.ShowAsync();
直到用戶點擊該按鈕時,在該點處該方法可繼續從那裏。
我想我正在尋找類似的東西,我可以堅持在方法的行中,我需要顯示列表視圖,直到用戶選擇和項目並抓取被選中的項目的行。
想法?
謝謝!
也許可以做...與await Task.Delay(100);並檢查用戶是否按下確認按鈕? – Niewidzialny