2016-10-13 22 views
0

私は現在、ビューモデルのプロパティにマップの現在のビューポートをバインドしたいと考えているArcGIS Runtime SDK .NETと作業しています。ただし、ビューポート(Extentと表示)には、依存関係プロパティであるにもかかわらず、セッターはありません。MVVMのコントロールの呼び出しメソッド

ビューポートを設定するには、コントロールのメソッドを呼び出す必要があります。しかし、私はビューモデルからそれをどうやって行うのですか?私はすでにここで同様の質問を見つけましたが、ほとんどはと答えました。ビューモデルはビューを認識すべきではありません。私はそれに同意しますが、残念ながら、独自のコントロールのプロパティの設定者は、バインドして値を読み取ることができる実際のプロパティとは異なるメソッドであるという事実を変更することはできません。

答えて

3

MVVMに優しいと考えられるジョブを実行する方法はたくさんあります。 私が提案するものは、あなたが完全に制御できるカスタムコントロールでArcGISビューをラップすることです。このようにして、必要な依存プロパティを公開し、カスタムコントロールでセッターを処理できます。

私は他のコードと疎結合させて簡単に置き換えることができるように、この方法でサードパーティコンポーネントを使用するたびにこのメソッドを使用します。

+1

私はなぜこれについて考えなかったのだろうかと思います。それは素晴らしい考えです、ありがとう。 – artganify

+0

一般的には、View Eventsをコードビハインドで処理して、非UI固有のビットをviewmodelに即座に転送するか、EventToCommandを使用してそのビットをスキップすることができます。 – dotMorten

0

添付プロパティを使用して、特定の視点に移動するためのリッスンビューをVMリクエストにすることができます。あなたのVMで

https://github.com/Esri/arcgis-runtime-demos-dotnet/blob/master/src/TurnByTurn/RoutingSample.Shared/CommandBinder.cs

あなたは、単に視点のためINPCを上げる:私はここに私のサンプルであること使用してい

public Viewpoint ViewpointRequested 
{ 
    get { return m_ViewpointRequested; } 
    private set 
    { 
     m_ViewpointRequested = value; 
     RaisePropertyChanged("ViewpointRequested"); 
    } 
} 

そして最後にただのMapView上の添付プロパティにこれをバインドします:

<esri:MapView Map="{Binding Map}" 
      local:CommandBinder.RequestView="{Binding ViewpointRequested}" /> 
関連する問題