WPF appel Récursif à l'Automatisation des Pairs de l'API n'est pas valide

je reçois un message d'erreur "recursive call to Automation Peer API is not valid" lors du chargement d'un datagrid avec une datatemplatecolumn contenant une colonne combobox. L'erreur finit dans notre code d'exception. Cela semble être un problème sur ma machine, et google n'a fourni aucune source de conseils sur la résolution du problème. Le problème ne semble se produire que lorsque je remplis les ComboBox de données. Alimenter les comboboxes (si Je ne charge pas de données) fonctionne correctement, et lorsque l'erreur est affichée, je suis capable de voir correctement les données récupérées à l'arrière-plan.

j'utilise un datagrid WPF où J'utilise un DataGridTemplateColumn pour ajouter une combobox à l'intérieur de la grille. J'ai la liste déroulante liée à un enum en utilisant un objectdataprovider. Dans le code derrière lors de l'initialisation de mon écran, J'utilise une instruction Linq2Sql pour extraire des données et remplir la source Itemss de la grille.

<grid:DataGrid.Resources>
 <ObjectDataProvider
  x:Key="ChangeTypeData"
  MethodName="GetValues"
  ObjectType="{x:Type System:Enum}">
  <ObjectDataProvider.MethodParameters>
   <x:Type TypeName="namespace:ChangeType" />
  </ObjectDataProvider.MethodParameters>
 </ObjectDataProvider>     
    </grid:DataGrid.Resources>

 <grid:DataGrid.Columns>
 <grid:DataGridTextColumn Binding="{Binding DatapointName}" Header="Datapoint Changed" IsReadOnly="True" Width="Auto" />
 <grid:DataGridTemplateColumn Header="Change Type">
  <grid:DataGridTemplateColumn.CellTemplate>
   <DataTemplate>
    <ComboBox
     Text="{Binding Path=ChangeTypeName}"
     ItemsSource="{Binding Source={StaticResource ChangeTypeData}}"
     Name="dgcboChangeType"
SelectionChanged="dgcboChangeType_SelectionChanged"/>
   </DataTemplate>
  </grid:DataGridTemplateColumn.CellTemplate>

tous les conseils sur la résolution de ce problème est appréciée.

18
demandé sur Ryan 2010-10-25 22:49:32

6 réponses

j'ai contourné le problème de mon côté en désactivant L'automatisation du contrôle du réseau. J'ai trouvé que le problème était unique au contrôle de la boîte à outils WPF, mais j'avais des problèmes de transition à la version officielle 4.0 DataGrid (sans rapport avec cette question.)

donc à la place, je dérive la classe du WPFToolkit et fournit ce contrôleur:

protected override AutomationPeer OnCreateAutomationPeer()
{
   return null;
}

Peut-être quelqu'un peut nous dire si c'est une bonne idée ou pas.

18
répondu cunningdave 2010-11-03 19:01:13

j'ai eu exactement la même erreur. Cependant pour moi il était étrange que la même application fonctionnait très bien sur mon ordinateur portable et a causé l'erreur sur mon PC de bureau. Le même OS, la même architecture et le même Studio visuel avec les mêmes add-ons.

J'ai donc vérifié les références à WPFToolkit sur mon ordinateur portable, où tout allait bien. Il a souligné:

C:\Program Files (x86)\WPF Toolkit\v3.5.40619.1\WPFToolkit.dll

puis j'ai vérifié la référence sur mon bureau, elle pointait vers:

C:\Program Files (x86)\WPF Toolkit\v3.5.50211.1\WPFToolkit.dll

Comme vous pouvez le voir j'ai eu deux versions différentes de WPFToolkit installé. J'ai copié tout le dossier de mon ordinateur portable à mon bureau, changé les références de la version v3.5.50211.1 à v3.5.40619.1 et le problème fut résolu. Plus d'exceptions. Espérons que cela aidera quelqu'un.

4
répondu Protazy 2014-04-08 17:03:34

j'ai le même problème - utilisez-vous le datagrid du WPFToolkit, ou celui qui est livré avec .NET 4.0? On utilise toujours la boîte à outils.

en outre, j'ai remarqué que ce problème ne se produit pas lors de l'utilisation de l'application par le bureau distant.

problème Similaire posté ici:

http://wpf.codeplex.com/workitem/14443

avec une solution proposée. N'ont pas eu la chance de l'essayer.

3
répondu cunningdave 2010-11-02 22:08:42

J'ai eu le même problème dans NET 3.5 avec Wpftoolkit DataGrid.

j'ai lié mon DataGrid WPFToolkit à Entitefram Framework ObservableCollection, avec une hiérarchie d'entités qui ont des associations bidirectionnelles (Parent<->Items).

j'ai résolu le problème en désactivant implicitement les AutoGenerateColumns sur le DataGrid, et en réglant manuellement les colonnes.

J'espère que cela vous aidera.

3
répondu surfen 2011-11-29 16:41:43

j'ai aussi eu le même problème. Donc j'ai aussi vérifié la référence au WPFToolkit. J'ai eu deux mêmes versions de WPFToolkit installé (à la Version v3.5.50211.1), mais seulement sur mon ordinateur Portable fonctionne correctement.

alors j'ai mis l'ancienne version v3.5.40619.1 sur mon PC Windows Embedded Standard 7 et plus d'exceptions.

J'en suis donc venu à la conclusion que dans certains cas, la nouvelle Version a des problèmes avec le système d'exécution.

2
répondu Thomas 2014-05-23 08:03:49

Salut j'ai aussi eu le même problème lorsque J'ai lancé Microsoft Test Manager avec notre application WPF. Nous utilisions la version v3 de WPFtoolkit.5.50211.1, remplaçant WPF toolkit par lower version v3.5.40619.1 a résolu ce problème.

maintenant, nous pouvons exécuter L'outil MTM et l'application WPF simultanément.

en WPFToolkit v3.5.50211.1 un bug est corrigé en ce qui concerne L'Automation de L'UI et je suppose qu'à cause de cela ce problème de pair d'automation est à venir tout en utilisant le dernier WPFtoolkit.

2
répondu Akhilesh Saini 2015-10-29 15:54:45