Я работаю над диалоговым окном выбора, которое создается с помощью окна.
Я хотел бы выбрать записи в Listbox и передать их вызывающей модели просмотра, чтобы отобразить их в виде дерева .
На самом деле я вызываю Dialog и передаю модель просмотра this
в качестве параметра, чтобы получить доступ к методу, вложенному в вызывающую модель просмотра
:
#region Load Popup
GeneratorSelectionPopup SelectionPopup = new GeneratorSelectionPopup(this);
(SelectionPopup.DataContext as GeneratorSelectionViewModel).Generators = ItemsList;
SelectionPopup.ShowDialog();
#endregion
вызываемое окно (выделенный код)
public GeneratorSelectionPopup(ProjectViewModel projectview)
{
InitializeComponent();
this.DataContext = new GeneratorSelectionViewModel(this, projectview);
}
Вызываемая модель просмотра:
public GeneratorSelectionViewModel(Window window, ProjectViewModel projectViewModel)
{
mWindow = window;
_projectview = projectViewModel;
GeneratorSelectedCommand = new RelayCommand(GeneratorSelected, SelectionChanged);
}
private void GeneratorSelected(object parameter)
{
if (SelectedItem != null)
{
_projectview.TestMethod(SelectedItem);
}
}
И обратно в вызывающую модель просмотра ,
вызываемый метод:
public void TestMethod(GeneratorListItem selection)
{
MessageBox.Show(selection.GeneratorKey);
//add the selected item to treeview...
}
Пока он работает, но мне это кажется немного странным.
Простой вопрос, это правильный путь или есть способ лучше вызвать метод?