Übergeben von Parametern zwischen dem XAML-Fenster und dem Benutzersteuerelement WPF

8

Wie übergebe ich Parameter vom Xaml-Fenster an den WPF-Usercontrol-Konstruktor? Ich habe versucht, eine Abhängigkeitseigenschaft zu erstellen, aber es schlägt fehl. Sollte ich XAML-Erweiterungen ausprobieren oder gibt es andere Möglichkeiten?

%Vor%

xaml.cs des aufrufenden Window , also sein usercontrol.

%Vor%

InitializeComponent des obigen Fensters löscht den Wert der durch xaml gesetzten Abhängigkeitseigenschaft, bevor eine Instanz des Benutzersteuerelements erstellt wird, und daher ist der Wert der Eigenschaft dependence immer null.

und usercontrols xaml.cs

%Vor%

Beachten Sie, dass ich MVVM-Muster verwende.

    
user2330678 12.02.2014, 02:49
quelle

3 Antworten

8

XAML kann keinen Konstruktor mit Parameter verwenden. Behalten Sie, was Sie mit der Abhängigkeitseigenschaft versucht haben:

%Vor%

dann können Sie dies im Konstruktor versuchen:

%Vor%     
har07 12.02.2014, 03:51
quelle
2

Sie übergeben einen Parameter von XAML an die Benutzersteuerung, der nicht funktioniert. Wenn Sie Ihr Benutzersteuerelement aus XAML aufrufen, wird es den Standardkonstruktor Ihres Benutzersteuerelements aufrufen. In Ihrem Fall haben Sie keinen parameterlosen Konstruktor erstellt. Der andere mit dem Parameter Myusercontrol (string User) wird niemals aufgerufen.

Die beste Option ist, nur den parameterlosen Konstruktor für Ihr Benutzersteuerelement zu haben und nichts mehr.

%Vor%

Da Sie MVVM für Ihr Benutzersteuerelement verwenden, sollten Sie MVVM für das Fenster verwenden, das das Benutzersteuerelement hostet - so einfach:

Dort sollten Sie eine Eigenschaft für UserControlViewModel erstellen und ihre Instanz erstellen. Wenn Sie das tun, wäre es für Sie einfacher, den Datenkontext Ihres Benutzersteuerelements an sein ViewModel zu binden.

    
CarbineCoder 12.02.2014 05:22
quelle
0

Wenn Ihr Benutzersteuerelement an vielen Stellen verwendet wird, empfehle ich die Antwort har07 und verwende die Abhängigkeitseigenschaft. Wenn Ihr Steuerelement jedoch nur ein- oder zweimal verwendet wird und Sie faul genug sind, eine Abhängigkeitseigenschaft zu erstellen, können Sie Ihr Steuerelement immer aus Code erstellen. Erstellen Sie beispielsweise ein Raster als übergeordnetes Element und fügen Sie Ihr Steuerelement als untergeordnetes Element Ihres Rasters ein

XAML

%Vor%

Code

%Vor%     
euclid135 12.02.2014 04:05
quelle

Tags und Links