En application WPF J'utilise la zone de texte avec un style personnalisé dans lequel ContextMenu est outrepassée comme ceci:TextBox coutume ContextMenu dans le style, l'erreur de multithreading
<Style TargetType="{x:Type TextBox}">
<Setter Property="ContextMenu">
<ContextMenu>
<MenuItem Header="Copy"/>
</ContextMenu>
</Setter>
</Style>
Cela fonctionne parfaitement jusqu'à ce que je courrai fenêtre avec TextBox dans différents sujets tels que ceci:
Thread thread = new Thread(()=>
{
TestWindow wnd = new TestWindow();
wnd.ShowDialog();
});
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Start();
Mais cela provoque InvalidOperationException « Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread est propriétaire. ».
Comment éviter ce problème?
Une autre solution consiste à utiliser un sélecteur d'événements pour rightclick et créer un ContextMenu à la volée. –