In una maschera WPF si è creata una visualizzazione tramite datagrid di alcuni dati memorizzati in un database:
... <Window.Resources> <CollectionViewSource x:Key="tmpViewSource" d:DesignSource="{d:DesignInstance {x:Type Models:tmpModel}, CreateList=True}"/> </Window.Resources> ...
<DataGrid x:Name="tmpDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource tmpViewSource}}" Margin="10,48,10,10" RowDetailsVisibilityMode="VisibleWhenSelected" > <DataGrid.Columns> <DataGridTextColumn x:Name="firstColumn" Binding="{Binding firstCol}" Header="H1" Width="1*"/> <DataGridTextColumn x:Name="secondColumn" Binding="{Binding secondCol}" Header="H2" Width="3*" /> <DataGridTextColumn x:Name="thirdColumn" Binding="{Binding thirdCol}" Header="H3" Width="SizeToHeader" Visibility="Hidden"/> </DataGrid.Columns> </DataGrid> ...
Nel Codice, viene usata la seguente sintassi per popolare il grid con i dati:
... System.Windows.Data.CollectionViewSource tab_FascicoliViewSource; ...
private void Window_Loaded(object sender, RoutedEventArgs e) { db = new dbEntities(); tmpViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("tmpViewSource"))); tmpViewSource.Source = db.Tab_Fascicoli.ToList().OrderBy(Tab_Fascicoli => Tab_Fascicoli.NroFascicolo); } ...
Durante la personalizzazione di una visualizzazione di dati all’interno di una maschera WPF si può verificare l’errore sotto riportato:
Additional information: ‘EditItem’ is not allowed for this view.
che è una popup del più generico
Il problema viene risolto se, ovviamente, nel code behind invertiamo ToList() con OrderBy(…):
... tab_FascicoliViewSource.Source = db.Tab_Fascicoli.OrderBy(Tab_Fascicoli => Tab_Fascicoli.NroFascicolo).ToList(); ...