我正在構建一個應用程序,它使用了許多ItemControls(datagrids和listviews)。爲了方便地更新從後臺線程這些名單我使用這個擴展ObservableCollections,這工作得很好:升級到.NET 4.5:ItemsControl與其項目不一致源
今天我安裝VS12(這反過來又安裝了.NET 4.5),因爲我想用一個爲.NET 4.5編寫的組件。甚至在我的項目升級到.NET 4.5(從4.0)之前,我的數據網格從workerthread更新時開始拋出InvalidOperationException。異常消息:
此異常被拋出,因爲發電機控制「System.Windows.Controls.DataGrid Items.Count:5」名「(未命名)」已收到不同意CollectionChanged事件序列Items集合的當前狀態。檢測到如下區別: 累計計數圖4是從實際計數5.不同[累計計數(計數在上次復位+ #Adds - 自上次復位#Removes)。]
攝製代碼:
XAML:
<Window x:Class="Test1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid ItemsSource="{Binding Items, Mode=OneTime}" PresentationTraceSources.TraceLevel="High"/>
</Grid>
</Window>
代碼:
public partial class MainWindow : Window
{
public ExtendedObservableCollection<int> Items { get; private set; }
public MainWindow()
{
InitializeComponent();
Items = new ExtendedObservableCollection<int>();
DataContext = this;
Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(() =>
{
foreach (var item in Enumerable.Range(1, 500))
{
Items.Add(item);
}
});
}
}
我來自Microsoft .NET Framework團隊。您可以向我們發送在Microsoft dot com上的netfx45compat上重現問題的項目嗎?我想看看。此致,Varun Gupta – Varun
您對這個問題有任何進展嗎?我沒有在我的Win8開發盒中看到它,但我有一個擁有Win7和.NET 4.5的用戶,並且無法使用我的軟件。我們正試圖卸載4.5並轉到4.0。 – Thomas
已驗證:回滾修復了這個問題。 – Thomas