我从应用程序启动后获得了后台工作线程,继续运行并从Web服务下载文件。下载进程后退local_userid和local_percentage的实时值。我的一个WPF窗口填充了WPF DataGrid中的用户列表。我想使用userId进行过滤,并显示此特定用户行的currentDownloadProcess(百分比不断增加)。请参阅以下代码以检索local_userid和local_percentage。
public class TestViewModel:BindableBase
{
private readonly IRepo _Rp;
public BackgroundWorker subBGW;
private String _UpdatePer;
public String UpdatePercentage
{
get { return _UpdatePer; }
set { SetProperty(ref _UpdatePer, value); }
}
private string _caseId;
public string CaseID
{
get { return _caseId; }
set { SetProperty(ref _caseId, value); }
}
private ObservableCollection<tblTransaction> _ViewAKA = new ObservableCollection<tblTransaction>();
public ObservableCollection<tblTransaction> ViewAKA
{
get { return _ViewAKA; }
set { SetProperty(ref _ViewAKA, value); }
}
public TestViewModel(tblTransaction model)
{
BackGroundThread bgT = Application.Current.Resources["BackGroundThread"] as BackGroundThread;
bgT.GetPercentChanged += (ss, ee) =>
{
UpdatePercentage = bgT.local_percentage.ToString();
//do something with the value...
};
bgT.GetPercentChanged += (ss, ee) =>
{
CaseID = bgT.local_userid;
//do something with the value...
};
_Rp = new Repo();
List<tblTransaction> lstTransVal = _Rp.getAllTransaction();
ObservableCollection<tblTransaction> tempObss = new ObservableCollection<tblTransaction>();
foreach (tblTransaction tbl in lstTransVal)
{
if (CaseID == tbl.userid)
{
tbl.incValue = int.Parse(UpdatePercentage);
tempObss.Add(tbl);
}
else
{
tbl.incValue = 100;
tempObss.Add(tbl);
}
}
ViewAKA = tempObss;
}
}
这是我的dataGrid View
<DataGrid HorizontalAlignment="Left" Margin="10,62,0,0" ItemsSource="{Binding ViewAKA}" AutoGenerateColumns="False" VerticalAlignment="Top" Height="257" Width="512">
<DataGrid.Columns>
<DataGridTextColumn Header="userid" Binding="{Binding userid}" />
<DataGridTextColumn Header="subjMatr" Binding="{Binding subjMatr}" />
<DataGridTextColumn Header="Download %" Binding="{Binding incValue}" />
<DataGridTemplateColumn Header="Label">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding incValue,UpdateSourceTrigger=PropertyChanged}" Background="Red" Foreground="White" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Date" Binding="{Binding longTime}" />
</DataGrid.Columns>
</DataGrid>
这是我的模特
public class tblTransaction
{
public string userid { get;set;}
public string subjMatr { get; set; }
public int incValue { get; set; }
public DateTime? longTime { get; set; }
}
感谢任何帮助