Я написал этот код, который повторно создает новый список на каждой итерации. Цель состоит в том, чтобы отображать обновленный список в сетке данных на каждой итерации (что должно происходить каждые 1 с или около того).
Я думаю, что где-то ошибся в именовании или привязке в xaml, потому что я понимаю, что сетка данных должна автоматически заполнять возвращаемый список, но на данный момент она ничего не делает и остается пустой - что мне делать, чтобы заполнить сетку данных список?
Код итерации такой:
int i = 0;
do
{
i += 1;
UDPDataGrid.ItemsSource = LoadTimestamp(i);
UDPDataGrid.Items.Refresh();
} while (FinalExit == false);
LoadTimestamp передает аргумент i и возвращает список, приведенный в сокращенном фрагменте ниже:
private List<RowEntry> LoadTimestamp(int i)
{
// Initialise datagroup
List<RowEntry> TimestampGroup = new List<RowEntry>();
// Set port receiving
UdpClient receivingUdpClient = new UdpClient(int.Parse(txtPort.Text));
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
....................
....................
....................
return TimestampGroup;
}
Наконец, у меня есть запись в файле window.xaml следующим образом:
<Window x:Class="UDP_Receiver.MainWindow"
..........
Title="UDP Receiver" Height="750" Width="1200">
..........
<Grid Margin="0,0,16,34">
<DataGrid Name="UDPDataGrid" ItemsSource="{Binding TimestampGroup}" HorizontalAlignment="Left" Height="300" Margin="29,55,0,0" VerticalAlignment="Top" Width="1107"/>
</Grid>
</Window>
ObservableCollection
просто обеспечивает обновление пользовательского интерфейса, когда вы добавляете/удаляете строки, не заставляя DataGrid обновлять свой макет. Вместо этого можно назначитьItemsSource
. Но проблема ОП не в этом. Проблема заключается в зависании приложения, поскольку циклdo-while
блокирует основной поток пользовательского интерфейса. Таким образом, этот ответ полезен, но не поможет. 28.07.2020