WPF DataGrid "Actualiser" n'est pas autorisé pendant une AddNew ou EditItem transaction mvvm
J'ai la grille suivante
<DataGrid
x:Name="TablesDataGrid"
Grid.Column="0"
Grid.Row="1"
ItemsSource="{Binding FilteredModels.View}"
AlternationCount="2"
AutoGenerateColumns="False"
CanUserSortColumns="True"
CanUserReorderColumns="False"
CanUserDeleteRows="False"
CanUserAddRows="False"
SelectionMode="Extended"
IsReadOnly="False"
SelectionUnit="FullRow"
RowHeight="25"
HorizontalAlignment="Stretch"
ColumnWidth="Auto">
<DataGrid.Columns >
<DataGridCheckBoxColumn Width="*" Binding="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsReadOnly="False">
<DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.CheckAll}"/>
</DataTemplate>
</DataGridCheckBoxColumn.HeaderTemplate>
</DataGridCheckBoxColumn>
<DataGridTextColumn Header="Source Table" Binding="{Binding SourceTableFullName}" Width="4*"></DataGridTextColumn>
<DataGridTextColumn Header="EDW Schema" Binding="{Binding SchemaName}" Width="2*"></DataGridTextColumn>
<DataGridTextColumn Header="EDW Table" Binding="{Binding TableName}" Width="4*"></DataGridTextColumn>
<DataGridTextColumn Header="Status" Binding="{Binding Status}" Width="*"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
et puis j'ai une seachCommand avec effectue la recherche sur l'objet collectionviewsource FilteredModels dans le viewmodel et appelle ensuite
this.FilteredModels.View.Refresh();
lorsqu'un utilisateur contrôle un peu de cases à cocher et les envoie à la grille en mode édition, puis effectue une recherche, nous avons obtiens l'erreur suivante
WPF DataGrid 'Refresh' is not allowed during an AddNew or EditItem transaction
est-il un moyen de forcer la grille à la sortie du mode d'édition lorsqu'une case est cochée ou peut-être même lors de la recherche sur le bouton ou quelques autres pour résoudre ce problème?
merci!
OriginalL'auteur twaldron | 2013-11-25
Vous devez vous connecter pour publier un commentaire.
Je sais que je suis trop en retard pour répondre...mais pour quelqu'un qui est à la recherche pour répondre à
utilisation cancelEdit ou commitEdit méthode deux fois dans une séquence comme ce
//pour commettre
//pour annuler
Sa ne fonctionne pas
code?
Il n'est jamais trop tard :D. Votre réponse me fait gagner beaucoup de temps!!!! @Ash: Ma conjecture est que la grille de données stocke des deux transactions. Une pour la colonne et l'autre pour la ligne. Vous devez vous engager à la fois avant le rafraichissement de l'affichage de la collection.
Pour moi c'est la même chose, deux appels, l'un n'est pas assez. Merci également pour le "retard" de la réponse, n'est-ce pas trop tard pour moi aussi.
OriginalL'auteur Saad Abdullah
vous devriez être en mesure de lancer l'élément sélectionné à IEditableObject et appel EndEdit sur elle, ou appeler les grilles CancelEdit méthode.
OriginalL'auteur jfin3204