【发布时间】:2022-01-15 16:30:01
【问题描述】:
我正在创建一个 UI 以可视化模拟器的某些部分。我应该以表格格式呈现一些值,但是当表格已经初始化时,我无法让表格持续更新(它使用正确的值初始化,但是当你查看它时它是静态的,所以你必须转到另一个页面然后返回以更新表格) 这是代码:
<Page x:Class="SimulatorUI.RawDataPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SimulatorUI"
mc:Ignorable="d"
d:DesignHeight="950" d:DesignWidth="750"
Title="RawDataPage">
<DataGrid Name="dataTable" MinWidth="500" Margin="10 10 10 10" HorizontalContentAlignment="Center" HorizontalAlignment="Center"/>
</Page>
而c#代码是这样的
public partial class RawDataPage : Page
{
List<TankModule> tankList;
public RawDataPage(List<TankModule> list)
{
tankList = list;
InitializeComponent();
List<displayModule> data = loadTable();
dataTable.ItemsSource = data;
Task.Run(() => updateLoop());
}
public List<displayModule> loadTable()
{
List<displayModule> modules = new List<displayModule>();
foreach(TankModule tank in tankList)
{
modules.Add(new displayModule(tank));
}
return modules;
}
internal async Task updateLoop()
{
for (; ; )
{
dataTable.ItemsSource = null;
dataTable.ItemsSource = loadTable();
await Task.Delay(1000);
}
}
}
【问题讨论】:
-
我认为您应该尝试将 DataTable 的 ItemsSource 属性绑定到 ObservableCollection
Modules 属性,然后更新该属性。 -
谢谢,会调查这个!我在 C# 方面的经验非常有限,需要详细说明吗?