[英]ListView does not always refresh the databound rows from WCF service call, UWP C#
VisualStudio 2015,UWP,C#
我正在嘗試在提交選中的項目並通過WCF服務更新數據庫之后刷新數據。 刷新后,應始終刪除選中的項目。 有時(5次中的1次)它不會在刷新時刪除所有檢查項。 但是,如果過一兩秒鍾后單擊刷新按鈕,則新數據將正確填充列表視圖。 任何想法為什么這並不總是有效? 我是UWP的新手,所以我現在只介紹它。
[Undo][Refresh][Submit]
-----------------------
Item 1
-----------------------
Item 2
-----------------------
Item 3
-----------------------
√ Item 4
-----------------------
√ Item 5
-----------------------
菜單中的“提交按鈕檢查”圖標
private void SubmitDropOffButton_Click(object sender, RoutedEventArgs e)
{
bool needsRefresh = false;
for (int i = 0; i < ShipListView.Items.Count; i++)
{
var container = ((ListViewItem)(ShipListView.ContainerFromItem(ShipListView.Items[i])));
var chk = Child<CheckBox>(container, "ItemCheckBox");
if (chk != null)
{
if (chk.IsChecked == true)
{
ServiceLocal.ShipGroup ShipGroup = (ServiceLocal.ShipGroup)container.Content;
WriteSubmitDropOff(ShipGroup.id);
needsRefresh = true;
}
}
}
if (needsRefresh == true)
{
RefreshDropOffButton_Click(null, null);
}
}
提交檢查的物品
private async void WriteSubmitDropOff(int id)
{
try
{
ServiceLocal.Service1Client client = new ServiceLocal.Service1Client();
await client.SubmitDropOffAsync(id);
await client.CloseAsync();
}
catch (Exception ex)
{
}
}
刷新列表視圖
private async void RefreshDropOffButton_Click(object sender, RoutedEventArgs e)
{
ServiceLocal.Service1Client client = new ServiceLocal.Service1Client();
var itemSource = await client.GetShipData2Async(1);
ShipListView.ItemsSource = null;
ShipListView.ItemsSource = itemSource;
await client.CloseAsync();
}
將它們替換為您的代碼。
bool result = await WriteSubmitDropOff(ShipGroup.id);
private async Task<bool> WriteSubmitDropOff(int id)
{
try
{
ServiceLocal.Service1Client client = new ServiceLocal.Service1Client();
await client.SubmitDropOffAsync(id);
await client.CloseAsync();
}
catch (Exception ex)
{
return false;
}
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.