我已经写了一个方法,它发送一个UDP广播并接收一个循环中的结果,并立即写入List<String>
。由于我使用ReceiveAsync()
,它正在运行异步。UWP - 从正在运行的异步方法刷新ListView
我的问题是:如何在每次循环向我的列表添加字符串时在我的UI中刷新ListView。所以我希望结果能够在列表中显示在屏幕上。
代码
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控件代码隐藏XAML
<ListView x:Name="lbIps" HorizontalAlignment="Left" Height="174"
Margin="450,151,0,0" VerticalAlignment="Top" Width="298" />
代码
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