UDPブロードキャストを送信し、その結果をループで受信して即座にList<String>
に書き込むメソッドを作成しました。私はReceiveAsync()
を使っているので、それは非同期で実行されています。UWP - 実行中の非同期メソッドからListViewをリフレッシュする
私の質問は:どのように私のUIでリストビューをリフレッシュすることができますループは、私のリストに文字列を追加するたびに。だから私は結果がリストに表示されるように画面上に即座に表示されるようにしたい。
コード
do
{
UdpReceiveResult result = await sclient.ReceiveAsync();
ipList.Add(result.RemoteEndPoint.Address.ToString());
// after this step I want the ListView to get refreshed
} while (sclient.Available != 0);
XAML ListViewのコード
<ListView x:Name="lbIps" HorizontalAlignment="Left" Height="174"
Margin="450,151,0,0" VerticalAlignment="Top" Width="298" />
XAML
の背後にあるコードpublic async void btnBroadcast_Click(object sender, RoutedEventArgs e)
{
await ND2.run();
lbIps1.ItemsSource = ND2.ipList;
}
どのようにListViewを表示していますか?あなたのUIをipListにバインドする場合は、リストが更新されるたびに 'OnPropertyChanged(" ipList ")'を呼び出すだけでよいでしょう。 – Lithium
私のMainApp.xaml.csでは、私の非同期UDPメソッドを実行します。それが完了/キャンセルされた後は、lvIp.ItemsSource = UDPMethodClass.IpList;を使用します。それで、私の仕事のキャンセル後の結果を表示します。 – David
そのコードも投稿して、リストを表示するXAMLを投稿する必要があります。実際には、ipListが読み込まれるときにこれを更新したい場合は、XAML内のitemsSourceをバインドし、更新が必要なときには 'OnPropertyChanged()'を呼び出す必要があります。 – Lithium