Есть несколько radiobuttons, которым нужно при нажатии менять свойство (MethodName) в классе MethodViewModel через привязку. Но, чтобы поменять свойство нужно выполнить метод ChangeMethodName, который находиться по пути MainViewModel.MethodViewModel.ChangeMethodName, т.к. в файле MainWindow.xaml.cs у меня прописано
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel();
}
Как это можно сделать?
И, вообще, правильно ли создавать 2 ViewModel класса и потом пихать в MainViewModel MethodViewModel ?
Код:
public class MainViewModel
{
public MethodViewModel MethodViewModel { get; set; }
}
public class MethodViewModel : INotifyPropertyChanged
{
public ICommand ChangeMethodName { get; private set; }
private string _methodName;
public string MethodName
{
get => _methodName;
set
{
_methodName= value;
OnPropertyChange("MethodName");
}
}
public MethodViewModel()
{
ChangeMethodName = new RelayCommand(ExecuteChangeMethodName, CanExecuteChangeMethodName);
}
#region PropertyChangedImplementation
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChange(string propertyname)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
}
}
#endregion
private bool CanExecuteChangeMethodName(object parameter)
{
if (parameter != null)
{
return true;
}
else
{
return false;
}
}
private void ExecuteChangeMethodName(object parameter)
{
Method = (string)parameter;
}
}