问题描述
我有一个:
<controls:DataGrid>
在C#中进行的UWP开发中的XAML页面中,该信息会更新Web服务的价格。
通过ObservableCollection,单元格会自动更新价格。
我希望该单元格在值更新时闪烁。
我不知道如何通过ObservableCollection元素获取GridView的最新更新单元,以及以编程方式对其进行更新时引发的哪个事件。
XAML部分:
<controls:DataGrid x:Name="dgBalances" Height="600" Margin="12" AutoGenerateColumns="True" ItemsSource="{x:Bind Info.Balances }" Grid.Row="4" Grid.Column="0" AlternatingRowBackground="SlateGray" RowBackground="DimGray"/>
功能部分:
private async Task UpdateBalancesServiceAsync(ObservableCollection<AssetBalance> balances,MyWebservice client)
{
//Run like service updating the observablecollection
while (true)
{
// Get All Balances
var ret = await client.GetBalancesAsync();
if (ret.Success)
{
foreach (var returnedbalance in ret.Data)
{
if (balances.FirstOrDefault(x => x.Currency.Equals(returnedbalance.Currency)) != null)
{
// If Balance exists and the Value needs update.
if (balances.FirstOrDefault(x => x.Currency.Equals(returnedbalance.Currency)).Value != returnedbalance.Total)
{
_ = CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
balances.FirstOrDefault(x => x.Currency.Equals(returnedbalance.Currency)).Value = returnedbalance.Total;
balances.FirstOrDefault(x => x.Currency.Equals(returnedbalance.Currency)).LastUpdate = DateTime.Now;
});
}
else
{
// If Balance exists and the Value doesn't need update,just show the time last checked.
_ = CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
balances.FirstOrDefault(x => x.Currency.Equals(returnedbalance.Currency)).LastUpdate = DateTime.Now;
});
}
}
else
{
// If Balance does not exists it will create the new one.
_ = CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
{
balances.Add(new AssetBalance()
{
LastUpdate = DateTime.Now,Currency = returnedbalance.Currency,Value = returnedbalance.Total
});
});
}
}
}
Thread.Sleep(10000);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)