2016-04-18 24 views
3

UIにX軸を左右にパンしたり、ズームインまたはズームアウトする必要があるボタンがあります。問題はMVVMだから、ビューモデルがビューに直接アクセスできないため、XAxis.Zoom()のようなことはできません。私がxamlで定義できるすべてのズーム修飾子は、コントロール上でマウス/タッチイベントに直接反応するように見えます。 MVVMの制約に違反することなくコードから軸を操作するにはどうすればよいですか?SciChart - MVVMのコードからのズームとパンニング

編集:私はSciChartバージョン3.3.1を使用していることを付け加えてください。現在の反復では、新しいメジャーバージョンに更新するスペースがなくなり、APIの変更が破損する可能性があります。

答えて

0

ViewModelからビューポートズームを制御する最も簡単な方法は、VisibleRangeにバインドすることです。

表示

<s:SciChartSurface> 
    <!-- RenderableSeries omitted --> 

    <s:SciChartSurface.XAxis> 
     <s:NumericAxis VisibleRange="{Binding XVisibleRange}"/> 
    </s:SciChartSurface.XAxis> 

    <s:SciChartSurface.YAxis> 
     <s:NumericAxis VisibleRange="{Binding YVisibleRange}"/> 
    </s:SciChartSurface.YAxis> 
</s:SciChartSurface> 

ビューモデル

// Viewmodel, I assume you will implement INotifyPropertyChanged 

public DoubleRange XVisibleRange { get;set; } 
public DoubleRange YVisibleRange { get;set; } 

この技術はSciChart Examples to provide scrollingの数に使用されます。

ChartModifierのAPI

あなたが軸上で直接メソッドをズーム()、スクロール()を呼び出すしたい場合は、これを行うための最善の方法はChartModifier APIです。

このAPIを使用すると、マウスボタンやキー入力に反応し、XAxis、YAxis、RenderableSeriesに直接アクセスして拡大/縮小やパンが可能なさまざまな動作を作成できます。

custom modifiers which can zoom and pan hereの作成例があります。これらのクラスからプログラムでズームをパンニングすることができます。したがって、イベントやメッセージをChartModifierBase派生クラスにルーティングしてグラフを操作することをお勧めします。

0

ズーム機能はVisibleRangeプロパティを変更するように見えます。そのため、解決策は軸のVisibleRangeをviewmodelプロパティにバインドし、それに応じてプロパティを変更することでした。 AutoRangeをNeverに設定することもできます。

関連する問題