簡體   English   中英

ListView並不總是從WCF服務調用UWP C#刷新數據綁定的行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM