Sie haben erwähnt, dass diese beiden Steuerelemente einander nicht bekannt sind, aber an denselben ViewModel
gebunden sind. Ich habe den einfachsten Weg gefunden, irgendeine Art von Code auszuführen, wenn eine Eigenschaft geändert wird, um sie direkt aus dem Zugriffsmodifizierer set { }
auszuführen. Beachten Sie Folgendes:
public class MyViewModel
{
private MyObject _currentObject;
public MyObject CurrentObject
{
get { return this._currentObject; }
set
{
this._currentObject = value;
//Usually where OnPropertyChanged goes or however you implement INotifyPropertyChanged
//Where we call our command, logic can be introduced if needed.
//Also we may just call the method directly.
this.SomeCommand.Execute(null);
}
}
private Command _someCommand;
public Command SomeCommand
{
get
{
return this._someCommand ?? (this._someCommand = new Command(
() =>
{
this.SomeMethod();
},
() =>
{
//The CanExecute test, returns bool.
return this._currentObject != null ? true : false;
}));
}
}
private string SomeMethod()
{
return "I just got called yo!";
}
}
Update:
Da der Code zur Ausführung in dem Handler existiert müssen Sie ein wenig Arbeit zu tun, um dieses Recht zu bekommen. Obwohl dieses MVVM Prinzipien verletzt, wird es funktionieren:
- Sie müssen den Code bewegen, um die
ViewModel
unter einer neuen Methode auszuführen, wenn noch nicht geschehen, lassen Sie halten die mit dem SomeMethod()
Namen.
Sie müssen einen Verweis auf die ViewModel
im Handler erhalten. Ich gehe davon aus das bereits gesetzt ist als DataContext
MyViewModel viewModel = DataContext as MyViewModel;
Als nächstes müssen Sie diese Methode aus dem Handler nennen:
viewModel.SomeMethod();
Jetzt können Sie die Methode aufrufen aus Der set { }
Teil Ihrer Immobilie ist in der ViewModel
enthalten.
Ich hoffe, das funktioniert für Sie.
Vielen Dank für die Einsicht, aber mein Problem ist, dass die Methode, die ich versuche zu rufen, im Code-Behind des Benutzersteuerelements steht, das 'Button' hält. Vielleicht liegt es an meinem schlechten Design, dass diese Situation passiert ist. Ich verwende diese Schaltfläche, um eine Zeichnung beim Klicken zu aktualisieren. Das möchte ich auch beim Wechsel der Combobox erreichen. – Vahid