2017-09-21 1 views
0

J'ai une application WinForms qui agit comme un service (donc pas d'interface utilisateur réelle), mais c'est une application WinForms.
Dans cette application, j'ai une forme qui a un ElementHost et dans l'élémentHost j'ai une grille WPF.
Dans une de mes classes, j'ai ce code:L'appel de winforms hébergeant la grille Wpf provoque une erreur

Dim frm1 As New frmHostWpfGrid '->HERE I get the error 

frm1.WpfGrid.WpfGridControl.BeginDataUpdate() 
frm1.WpfGrid.WpfGridControl.ItemsSource = Nothing 
frm1.WpfGrid.WpfGridControl.RestoreLayoutFromStream(LayoutStream) 
frm1.WpfGrid.WpfGridControl.ItemsSource = mdtData 
frm1.WpfGrid.WpfGridControl.EndDataUpdate() 

L'erreur que je reçois est:
Le thread appelant doit être STA, parce que de nombreux composants de l'interface utilisateur exigent.
Lorsque j'ai essayé avec un formulaire WinForms et une grille, je n'ai pas eu ce problème.

PS1. Notez que je ne veux pas afficher le formulaire
PS2. J'ai essayé de remplir directement une grille WPF sans formulaire et j'ai eu la même erreur

Répondre

-2

Vous essayez de créer des objets d'interface utilisateur sur un thread non UI. Il est difficile de dire exactement ce qui cause l'erreur sans voir le code d'initialisation de votre formulaire où il doit être en train de configurer certains des éléments WPF.

J'ai besoin d'en savoir plus sur frmHostWpfGrid pour vous donner une réponse exacte.

+0

Ma forme est juste une winforms, avec un élémentHost et dans l'élémentHost est une grille wpf. Pas de code derrière – Nianios