在DataGrid WPF MVVM

时间:2015-09-21 15:32:10

标签: c# wpf mvvm datagrid

我从应用程序启动后获得了后台工作线程,继续运行并从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; }
}

感谢任何帮助

0 个答案:

没有答案