2011-10-15 60 views
0

我已經觀察到的集合對象限定到一個TreeView:WPF線程錯誤

MainTreeView.ItemsSource = ((App)Application.Current).TucOC; 

的問題是,當我更新的((APP)Application.Current).TucOC這樣:

_tucActivity.Add(new TucActivity(TucActivityEnum.Approve, null)); 

我收到以下錯誤: 此類CollectionView不支持從與分派器線程不同的線程更改其SourceCollection。

回答

2

您只能從UI線程操縱wpf對象。您收到的錯誤聲明您是通過其他線索完成的。 只需從Application.Current獲得分派器,並從它

Application.Current.Dispatcher.BeginInvoke(
    DispatcherPriority.Normal,() => _tucActivity.Add(new TucActivity(TucActivityEnum.Approve, null))); 
+0

這樣叫

_tucActivity.Add(new TucActivity(TucActivityEnum.Approve, null)); 

顯示以下錯誤消息: 無法轉換lambda表達式鍵入「System.Delegate」,因爲它不是委託類型 – kaycee

+1

該語法不完全合法(優先級爲第2),但這個想法是合理的。 –

+2

稍微修復: Application.Current.Dispatcher.BeginInvoke( DispatcherPriority.Normal,new Action(()=> _tucActivity.Add(new TucActivity(TucActivityEnum.Approve,null)))); 現在有效 – kaycee