2014-08-28 1 views
0

Привет всем Я борюсь с процессом отправки данных между моделями просмотра в модели Catel MVVM. У меня есть кнопка, которая по щелчку я хочу открыть новое окно и отправить некоторые данные (объект) в только что открытое окно. Однако я не могу решить это самостоятельно, так что вы можете мне помочь?Catel MVVM: Как передавать данные между окнами

В моих первых Посмотреть модели у меня есть:

private readonly IShowStopInfo stopInfo; 

//Main constructor of the class 
public StopViewModel(IGrtrService grtrService, IShowStopInfo stopInfo) 
{ 
    this.stopInfo = stopInfo; 

    Argument.IsNotNull(() => grtrService); 
    _grtrService = grtrService; 

    AllStops = _grtrService.LoadStop(); 
    Stop_Line = _grtrService.LoadLines(); 

    ShowSelectedValue = new Command(OnStopsInfo); 
} 
public Command ShowSelectedValue { get; private set; } 

private void OnStopsInfo() 
{ 
    stopInfo.ShowStopInfo(); 
} 
//Getting Selected Stop from the list 
public Stop SelectedStop 
{ 
    get { return GetValue<Stop>(SelectedStopProperty); } 
    set { SetValue(SelectedStopProperty, value); } 
} 
public static readonly PropertyData SelectedStopProperty = RegisterProperty("SelectedStop", typeof(Stop)); 

В моем случае я хочу, чтобы отправить результат от метода «SelectedStop» как я могу сделать это?

+0

пожалуйста, убедитесь, чтобы отметить ответы предыдущие вопросы, такие как http://stackoverflow.com/questions/25280047/mvvm-eventtocommand-not-found –

+0

как это отвечает на мой вопрос? – user3182266

+0

это помогает удерживать людей мотивированными, чтобы ответить на ваши вопросы, поэтому таким образом он определенно помогает ;-) –

ответ

1

Пожалуйста, проверьте раздел «Getting started with WPF» в Catel. Это поможет вам создать первое приложение со всеми основными принципами. Одна из основ показывает окно с контекстом.

Вы можете найти очень подробное объяснение (со скриншотами и т. Д.) here.

В основном вы должны использовать первый параметр модели окна в качестве модели инъекции (в примере это модель Person).

Затем проверьте часть «hooking up everything together», особенно команды (где IUIVisualizerService используется для создания окна с выбранным человеком или семейством).

Например, деталь VM будет выглядеть следующим образом:

public class MyStopDetailsViewModel : ViewModelBase 
{ 
    public MyStopDetailsViewModel(Stop myStop, IMessageService messageService, IPleaseWaitService pleaseWaitService) 
    { 
     // Here is the context with the injected Stop parameter. Note that I have 
     // also injected several other services to show how you can use the combination 
    } 
} 

Вы можете назвать это (как уже показано в примере) следующим образом:

var typeFactory = this.GetTypeFactory(); 
var stopDetailsViewModel = typeFactory.CreateInstanceWithParametersAndAutoCompletion<MyStopDetailsViewModel>(SelecteedStop); 
_uiVisualizerService.ShowDialog(stopDetailsViewModel); 
+0

hmmm, но в моем случае public Stop SelectedStop - это конструктор, как я могу передать его значение? – user3182266

+0

класс SelectedStopViewModel общественного { общественного SelectedStopViewModel (Stop stopModel, IAnotherDependency anotherDependency) { // здесь ваш контекст }} –

+0

может у обновить свой ответ? – user3182266