繁体   English   中英

您如何迭代并将逻辑应用于DataGrid中的行

[英]How do you iterate and apply logic to rows in DataGrid

因此,我试图将计时器添加到新列“ Duration”中,该计时器减去开始的时间(它是date time ,并显示其已激活了多长时间。 到目前为止,这就是我所拥有的:

XAML:

<DataGridTextColumn Binding="{Binding BlockName}" Header="Block" Width="200"/>
<DataGridTextColumn Binding="{Binding Auditor}" Header="Auditor" Width="200"/>
<DataGridTextColumn Binding="{Binding AcctAuditor}" Header="Accounting Auditor" Width="200"/>
<DataGridTextColumn Binding="{Binding BlockLeader}" Header="Block Leader" Width="200"/>
<DataGridTextColumn x:Name="TimeStarted" Binding="{Binding TimeStarted}" Header="Started" Width="200"/>
<DataGridTextColumn x:Name="Duration" Header="Elapsed Time" Width="200"/>

背后的代码:

System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
    foreach (DataRowView dr in BlockStatus.ItemsSource)
        {
        var diff = dr.Row.Field<DateTime>("TimeStarted").Subtract(DateTime.Now);
        if (diff.TotalSeconds > 0)
        {
            dr.Row["Duration"] = string.Format("{0} d {1:D2}:{2:D2}:{3:D2}", diff.Days, diff.Hours, diff.Minutes, diff.Seconds);
        }
        else
        {
            dr.Row["Duration"] = "0 d 00:00:00";
        }
    }
}

我正在尝试在基于另一列的新列中使用mm:ss进行计数。

这是一张图片:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM