Bonjour,
je bloque actuellement sur une modification UI qui refuse de se faire sur le thread UI. J'ai développé un user control comprenant une toolbar et un RichTextBox. Je voudrais pouvoir utiliser ce control de la manière suivante:
J'ai donc ajouté une dependency propertie à mon user control pour faire le lien avec la propriété 'Document' du RichTextBox. Et dans le callback de cette property je voudrais mettre à jour la valeur 'document' du RichTextBox comme ci-dessous:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <local:RichTextEditorUC Height="265" Margin="0,10,0,0" Document="{Binding ElementName=MusicalGenreComboBox, Path=SelectedItem.Description, UpdateSourceTrigger=PropertyChanged}"/>
L'affectation du 'FlowDocument' me lève une 'InvalidOperationException' avec le message suivant: Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread en est propriétaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static readonly DependencyProperty DocumentProperty = DependencyProperty.Register("Document", typeof(FlowDocument), typeof(RichTextEditorUC), new PropertyMetadata(OnDocumentChanged)); private static void OnDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { RichTextEditorUC editor = (RichTextEditorUC) d; editor.RichText.Document = (e.NewValue == null) ? new FlowDocument() : (FlowDocument) e.NewValue; })); }
Pourriez-vous m'expliquer mon erreur et comment y remédier svp
Partager