UPDATE2C#/ WPF數據綁定和backgroundworkers
我已經重寫了整個問題,因爲有些事情變得更加清晰,這個問題現在似乎是我創建了一個不同的線程DependencyProperties列表比在該DependencyProperties將用於:(。
當我做一個BackgroundWorker
的XAML
綁定一些工作造成ArgumentException
必須在與DependencyObject相同的線程上創建DependencySource。
我有以下設置:
我有一個簡單的類,它實現INotifyPropertyChanged
其中包含了幾個整數,列表的和字典。
public class Calculator : INotifyPropertyChanged
{
//Note that InstanceGroup is a dependency object
private List<InstanceGroup> instanceGroups = new List<InstanceGroup>();
public List<InstanceGroup> InstanceGroups
{
get { return instanceGroups; }
set { instanceGroups = value; }
}
// snip //
public void Calculate()
{
InstanceGroups = MyNewFilledInstanceGroup;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("instanceGroups"));
}
}
}
在UserControl
我使用BackgroundWorker
運行Calculate
方法,因爲它會佔用大量的時間:
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate(object o, DoWorkEventArgs args)
{
lock (Calculator)
{
Calculator.Calculate();
}
};
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.RunWorkerAsync();
在XAML
文件UserControl
我有多個綁定到Calculator
,如{Binding Path=Calculator.InstanceGroups, Path=userControlName}
。
(總的目標是能夠做所有的工作在計算方法上的一個單獨的線程,所以我可以顯示一個進度條或類似的東西)
嘿Anvarbek,我(暫時)用正常的List <>替換ObservableCollection,但問題依然存在。 –