Sto costruendo un'applicazione, che utilizza molti ItemControls (datagrids e listview). Al fine di aggiornare facilmente queste liste da sfondo le discussioni che ho usato questa estensione a ObservableCollections, che ha funzionato bene:Aggiornamento a .NET 4.5: Un controllo ItemsControl non è coerente con i relativi articoli
Oggi ho installato VS12 (che a sua volta installato .NET 4.5), come voglio usare un componente scritto per .NET 4.5. Prima ancora di aggiornare il mio progetto a .NET 4.5 (dalla 4.0), il mio datagrid ha iniziato a lanciare InvalidOperationException quando aggiornato da un workthread. Messaggio di eccezione:
Questa eccezione è stato gettato in quanto il generatore per il controllo 'System.Windows.Controls.DataGrid Items.Count: 5' con il nome '(senza nome)' ha ricevuto sequenza di eventi CollectionChanged che non sono d'accordo con lo stato attuale della raccolta articoli. Sono state rilevate le seguenti differenze: accumulato conteggio 4 è diverso da conteggio effettivo 5. [conteggio accumulato è (Conteggio finalmente reset + #Adds - #Removes dall'ultimo reset).]
codice
Repro:
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>
Codice:
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);
}
});
}
}
Sono del team Microsoft .NET Framework. Potresti inviarci un progetto che riproduce il problema su netfx45compat su Microsoft dot com? Vorrei dare un'occhiata Cordiali saluti, Varun Gupta – Varun
Hai fatto qualche progresso con questo problema? Non lo vedo sulla mia scatola di sviluppo Win8, ma ho un utente che ha Win7 e .NET 4.5 e non è in grado di utilizzare il mio software. Stiamo cercando di disinstallare 4.5 e andare a 4.0. – Thomas
verificato: rollback risolto il problema. – Thomas