0

こんにちは、Catel MVVM モデルのビュー モデル間でデータを送信するプロセスに苦労しています。クリックすると新しいウィンドウを開き、新しく開いたウィンドウにデータ (オブジェクト) を送信するボタンがあります。しかし、私はこれを自分で解決することができないので、私を助けてもらえますか?

私の最初のView Modelには次のものがあります。

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」メソッドから結果を送信したいのですが、どうすればよいですか?

4

1 に答える 1

1

Catel の「WPF 入門」セクションを参照してください。すべての基本を備えた最初のアプリケーションの作成をガイドします。基本の 1 つは、ウィンドウにコンテキストを表示することです。

非常に詳細な説明 (スクリーンショットなど) を見つけることができますここ.

基本的に、ウィンドウ ビュー モデルの最初のパラメーターをモデル インジェクションとして使用する必要があります (この例では Person モデルです)。

次に、「すべてを一緒に接続する」部分、特にコマンド (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 );
于 2014-08-28T12:13:23.280 に答える