2016-11-03 1 views
0

私は.dotcontrolを持っているので、viewmodelの関数をコントロールのデータで呼び出す必要があります。DOTVVMのコントロールのデータを使ってviewmodelのメソッドを呼び出すにはどうすればよいですか?

viewmodelでのみ利用可能なファサードが必要なため、このメソッドを制御することはできません。だから私はviemodelのためのインターフェイスを宣言し、この機能を実装しました。

しかし、私は以下のようにそれを呼び出す場合:

<dot:Button Click="{controlCommand: ViewModelFunction(ControlProperty)}" Text="CHECK CODE"/> 

それは次のようなエラーが発生します。

The Name 'ViewModelFunction' does not exist in the current context'.

だから私はちょうどコマンドでそれを呼び出してみました:

<dot:Button Click="{command: ViewModelFunction(ControlProperty)}" Text="CHECK CODE"/> 

これが見えました私は1つのページに2つのコントロールがある場合、それは動作しません。このメソッドは、コントロールの最初の使用のデータで呼び出されるためです。コントロールの別の使用法のデータは認識されません。

コントロールのデータでviewmodelのメソッドを呼び出すにはどうすればよいですか?

答えて

1

ViewModelFunctionがViewModelで宣言され、controlCommandのデフォルトのバインディングコンテキストがコントロールであるため、controlCommandが機能しません。 _thisパラメータを使用すると、ビューモデルのメソッドとプロパティにアクセスできます。だから、次のようになります。ちなみに

<dot:Button Click="{controlCommand: _this.ViewModelFunction(ControlProperty)}" Text="CHECK CODE"/> 

、我々は第二のアプローチがうまくいけば、将来的に動作しますので、コマンドバインディングのこの制限を削除するために滑走しています。

関連する問題