如何每 1 分钟自动刷新一次 WPF 上的数据网格
本文关键字:WPF 一次 网格 数据网 数据 分钟 何每 刷新 | 更新日期: 2023-09-27 17:57:12
我希望能够刷新我的数据网格,因为我正在更新数据库数据网格上的表并希望查看网格的变化,有没有办法每 1 分钟自动更新一次数据网格?
DataGrid.Items.Refresh()
将刷新项目。 然后,您可以使用计时器每分钟运行一次以强制刷新
下面是实现计时器以更新列表框的示例,您可以根据自己的目的对其进行调整。
今后,您可以使用ObservableCollection
来绑定网格,以避免手动刷新。
我最终使用了DispatcherTimer 它为我简化了一些线程问题:
private static DispatcherTimer _dataUpdateTimer = null;
private ObservableCollection<Item> _items;
public ObservableCollection<Item> Items
{
get { return _items; }
set
{
if (_items == value)
return;
_items = value;
this.OnPropertyChanged(nameof(Items));
}
}
private void SetupDataUpdateTimer()
{
_dataUpdateTimer = new DispatcherTimer();
_dataUpdateTimer.Tick += OnDataUpdateEvent;
_dataUpdateTimer.Interval = TimeSpan.FromMilliseconds(10000);
_dataUpdateTimer.Start();
}
private void OnDataUpdateEvent(object sender, EventArgs e)
{
this.Items = ... add or remove items
// ...
}
当我以前只使用基本Timer
时,我收到此错误:
System.InvalidOperationException
HResult=0x80131509
Message=The calling thread cannot access this object because a different thread owns it.
Source=WindowsBase
StackTrace:
at System.Windows.Threading.Dispatcher.VerifyAccess()
at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
at System.Windows.Controls.Primitives.Selector.get_SelectedValue()
at ...
at System.Timers.Timer.MyTimerCallback(Object state)