0

.dotcontrol があり、コントロールからのデータを使用してビューモデルで関数を呼び出す必要があります。

ビューモデルでのみ使用できるファサードが必要なため、メソッドをコントロールに含めることはできません。そのため、viemodel のインターフェイスを宣言し、この関数を実装しました。

しかし、以下のように呼び出すと:

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

次のエラーが発生します。

名前「ViewModelFunction」は現在のコンテキストに存在しません。

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

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

これは問題ないように見えましたが、1 つのページに 2 つのコントロールがあるとうまくいきません。メソッドは、コントロールの最初の使用のデータで呼び出されるためです。コントロールの別の用途のデータは認識されません。

コントロールのデータを使用してビューモデルのメソッドを呼び出すにはどうすればよいですか?

4

1 に答える 1

1

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

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

ところで、コマンド バインディングのこの制限を取り除くことを計画しているため、2 番目の方法が将来的に機能することを願っています。

于 2016-11-03T14:34:35.267 に答える