Laden...

MVVM UserControl DataContext übernehmen

Erstellt von Taladan vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.793 Views
Taladan Themenstarter:in
582 Beiträge seit 2008
vor 10 Jahren
MVVM UserControl DataContext übernehmen

Hallo,

ich habe ein ContentControl, in der diverse unterschiedliche UserControls geladen werden. Ich verwende MVVM und funktioniert wunderbar. Nun habe ich jedoch ein komplexeres UC, in der ich zusätzliche Kommandos verwenden muss/möchte, die aber nur für dieses UC relevant sind. Nun muss ich die irgendwie Binden.

Die Daten sind vorhanden die ich brauch, durch das Datacontext des UC. Doch wie kann ich nun die zusätzlichen Commandos binden. Wichtig ist dann, dass ich über die Commandos auch auf die Daten zu greifen können muss.

Ich kann es gerade nicht so gut beschreiben, daher werde ich es versuchen zu verbildlichen. Eine Liste mit X einträgen bei den X2 gewählt wird. X2 ist vom Typ Y für dem das UC Z geladen wird. Z erbt durch den Contentcontrol die den Datacontext aus X2. Wenn ich Z jetzt aber an ein neues ViewModel binde, ist der Datacontext weg. Aber nur das neue ViewModel gewährleistet mir neue Befehle.

Ich habe es jetzt so gelöst, dass das UC eine DependencyProperty Data erhält welches den DataContext beinhaltet und dieses an das neue VM weiter gibt. Funktioniert auch, aber sorgt das dafür, dass die IDE rum spinnt und sagt der XAML Designer "NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt".

Wie kann ich das besser lösen?

Gruß dat Tala

5.657 Beiträge seit 2006
vor 10 Jahren

Hi Taladan,

Wenn ich Z jetzt aber an ein neues ViewModel binde, ist der Datacontext weg.

Falls ich es richtig verstanden habe, ist das die Kernaussage. Aber du scheinst davon auszugehen, daß ein Control immer nur einen einzigen Context bzw. Databinding haben kann. Wenn du ein Command an ein UserControl binden willst, dann sollte das UserControl auch ein entsprechendes Property haben (wie z.B. Button.Command). Dann kannst du Commands und andere Daten binden, egal aus welchem Kontext sie stammen.

Christian

Weeks of programming can save you hours of planning