In einem meiner WPF-Projekte habe ich die AutoCompleteBox
-Kontrolle von WPF Toolkit integriert. Ich brauche ein benutzerdefiniertes Context Menu
für dieses Steuerelement und ich habe eines mit der ContextMenu
-Eigenschaft hinzugefügt. Leider zeigt es nicht den benutzerdefinierten, sondern den Standard-Schnittpunkt (d. H. Ausschneiden, Kopieren, Einfügen mit Ausschneiden und Kopieren als deaktiviert).
Um das Problem neu zu erstellen, habe ich ein Beispielprojekt erstellt und das Fenster enthält 2 Steuerelemente in einem Grid
.
Die beiden Steuerelemente haben die gleiche ContextMenu
und wenn ich die Lösung starte, kann ich sehen, dass die benutzerdefinierte ContextMenu
für TextBox
und nicht für AutoCompleteBox
funktioniert.
Außerdem setze ich das gleiche Kontextmenü auf Grid (übergeordnetes Steuerelement) und setze ContextMenu="{x:Null}"
auf TextBox & amp; %Code%. Jetzt ist AutoCompleteBox
für ContextMenu
vererbt, aber nicht für TextBox
.
Meine Frage ist also, wie kann ich eine benutzerdefinierte AutoCompleteBox
für AutoCompleteBox erstellen?
Wenn es nicht von Entwurf ( ContextMenu
) ist, wie kann ich ein AutoCompleteBox
zu einem benutzerdefinierten AutoCompleteBox-Steuerelement hinzufügen, das von ContextMenu
geerbt wird.
Bitte um Rat.
AutoCompleteBox
macht dependency property TextBoxStyle
verfügbar, was Sie set to customize TextBox hosted inside AutoCompleteBox
können.
Ein anderer Ansatz wäre, Ihre eigene Vorlage bereitzustellen, der ich mich stark widersetzen würde, da diese DP explizit für den von Ihnen gewünschten Zweck bereitgestellt wird, d. h. um textBox von außen anzupassen.
Erstellen Sie einen Stil für TextBox mit Ihrem benutzerdefinierten ContextMenu und wenden Sie diese Vorlage sowohl auf Ihre TextBox als auch auf Ihre AutoCompleteBox an . Dieses Beispiel funktioniert gut -
%Vor%Das Problem mit Toolkits AutoCompleteBox besteht darin, dass sie es versäumt haben, das ContextMenu an die inneren Elemente seiner visuellen Struktur zu übergeben. Ich habe die Vorlage von AutoCompleteBox bearbeitet. Es funktioniert gut, wenn ich TemplateBinding zwischen ContextMenu von AutoCompleteBox und ContextMenu von TextBox innerhalb der Vorlage von AutoCompleteBox hinzufüge.
Bitte finden Sie den Code fix:
%Vor%Grüße, Abdul Rahman A.H.
Tags und Links wpf c# wpftoolkit