2010-02-03 2 views
0

J'ai écrit une coutume Bindable RichText Box, donc je peux lier à la propriété de document.Ma coutume WPF RichTextbox n'acceptera pas l'entrée d'utilisateur, même après la mise en IsReadOnly = false

Cependant, dès que je mets mon contenu du document, la seule entrée du clavier, il accepte est la touche Retour arrière (???). Aucune autre entrée au clavier n'est reconnue (y compris les touches fléchées).

Des idées?

Voici le code de ma classe BindableRTB:

Imports System.Windows.Documents 
Imports System.Windows 
Imports System.Windows.Controls 

Public Class BindableRTB 
    Inherits System.Windows.Controls.RichTextBox 




Public Shared DocumentProperty As DependencyProperty = DependencyProperty.Register("Document", GetType(FlowDocument), _ 
          GetType(BindableRTB), New FrameworkPropertyMetadata(Nothing, _ 
          New PropertyChangedCallback(AddressOf OnDocumentChanged))) 
Sub New() 
    MyBase.new() 
    Me.IsReadOnly = False 
    Me.IsDocumentEnabled = True 

End Sub 

Public Overloads Property Document() As FlowDocument 
    Get 
     Return CType(MyBase.GetValue(DocumentProperty), FlowDocument) 
    End Get 
    Set(ByVal value As FlowDocument) 
     MyBase.SetValue(DocumentProperty, value) 
    End Set 
End Property 

Private Shared Sub OnDocumentChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)  Console.WriteLine("doc changed") 
    Dim rtb As RichTextBox = CType(d, RichTextBox) 
    rtb.Document = CType(e.NewValue, FlowDocument) 
End Sub 

End Class

Répondre

0

AH-ha! Résolu.

Ce que je ne l'avais pas mentionné (parce qu'il ne semble pas pertinent, est que ce contrôle est dans une fenêtre WPF, lancé à partir d'une application WinForms)

Lors du lancement de ma fenêtre WPF, je devais appeler ElementHost .EnableModelessKeyboardInterop() et passer une référence à ma nouvelle fenêtre, comme ceci:

Dim wpfEdit As New WpfEditor 
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(wpfEdit) 
    myParent.ShowNewWPFWindow(wpfEdit) 
Questions connexes