【问题标题】:Get the value from windows phone toolkit's DatePicker from background worker?从后台工作人员获取 Windows Phone 工具包的 DatePicker 的值?
【发布时间】:2013-12-13 11:25:05
【问题描述】:

我有一个 LongListSelector,可以将交易数据加载到其中。我对数据加载没有问题。我想过滤一个日期期间的数据,我知道如何使用 linq。问题是进程在 backgroundWorker 中运行,我无法从 DatePicker 获取值,因为它违反了跨线程操作。

我当前的后台工作代码是

Private Sub bw_loadTraDoWork(sender As Object, e As DoWorkEventArgs)
    'all transactions
    Try
        Dispatcher.BeginInvoke(Sub()
                                   SetProgress(True, "Working...")
                               End Sub)
        Dim db = New n_DataContext(Common.ConnectionString)
        Dim query = (From t In db.TransactionTable Join c In db.ExCat On c.ID Equals t.cat_id Order By t.tra_date Descending Order By t.ID Descending Select New TraList With {.tra_type = c.n_type, .amount = t.amount, .tra_date = t.tra_date, .note = t.note, .cat_name = c.cat_name, .ID = t.ID})

        Dim groupedObjects = From myObject In query Group myObject By myObject.tra_date Into grouped = Group Select New Grouping(Of DateTime, TraList)(grouped)

        Dispatcher.BeginInvoke(Sub()
                                   LstTransactions.ItemsSource = groupedObjects
                               End Sub)
    Catch ex As Exception
        MessageBox.Show("An error occured. try later.", "Oops!", MessageBoxButton.OK)
    End Try
End Sub

我尝试在Dispacher.BeginInvoke 中包装一个变量,但无法获取值。

请帮帮我。

【问题讨论】:

    标签: vb.net windows-phone-7 silverlight-toolkit


    【解决方案1】:

    当你调用RunWorkerAsync方法时,以这种方式传递一个参数:

    worker.RunWorkerAsync(pickerData)
    

    然后在DoWork子程序中获取你刚刚传递的值:

    Dim pickerData As CustomObject = DirectCast(e.Argument, CutomObject)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多