Einrichten der Bindung an eine benutzerdefinierte DependencyProperty in einem WPF-Benutzersteuerelement

8

Ich habe ein WPF-Benutzersteuerelement mit einer benutzerdefinierten DependencyProperty mit dem Namen MyDP. Ich möchte dies an eine Eigenschaft in meinem ViewModel (das als DataContext des Benutzersteuerelements injiziert wird) binden. Ich kenne eine Möglichkeit, dies zu tun, indem ich die Bindung in der UserControl-Deklaration im XAML des übergeordneten Fensters wie folgt setze:

%Vor%

Das funktioniert gut, aber als Alternative könnte ich die Bindung innerhalb der XAML des UserControl einrichten, ähnlich wie ich die Bindungen für die einzelnen Steuerelemente im UserControl zu anderen Eigenschaften des ViewModel festlegen?

    
Tim Trout 17.02.2010, 22:26
quelle

2 Antworten

15

Sie können nicht tun, was Sie ursprünglich direkt dachten. Sie haben es wahrscheinlich versucht und einige Kompilierungsfehler bekommen. Sie können eine benutzerdefinierte Eigenschaft nicht im Stammverzeichnis des Benutzersteuerelements XAML festlegen, da der Elementtyp UserControl ist, sodass der Compiler auf diesem Typ basierende Eigenschaftsnamen erzwingt, nicht den benutzerdefinierten Typ. Sie könnten dies umgehen, indem Sie zu einer Attached-Eigenschaft wechseln, aber das ändert tatsächlich die Bedeutung von MyDP. Stattdessen können Sie im Stil für das Benutzersteuerelement einen Standardwert festlegen und den zusätzlichen Vorteil erhalten, dass Sie es für jede deklarierte Instanz überschreiben können, indem Sie einfach das ausführen, was in Ihrem ursprünglichen Beispiel vorkommt. Setzen Sie dies unter dem Root-Element Ihres UserControls:

%Vor%     
John Bowen 18.02.2010, 01:09
quelle
1

Sie können die Bindung auch im Konstruktor von MainWindow wie folgt definieren:

%Vor%     
Horpe 21.10.2014 09:50
quelle