はいあります、
ドキュメントから: Zoom と Pan で Axis.VisibleRange をクリッピングします。
高度な VisibleRange クリッピングと操作
Axis.VisibleRangeLimitは、範囲にズームするときに軸がVisibleRangeを確実にクリップするのに役立つ API です。ただし、ユーザーがその範囲外にスクロールするのを止めることはできません。これを実現するには、小さな変更が必要です。
コードでの Axis.VisibleRange のクリッピング
VisibleRangeをクリップして特定の最大値または最小値を強制するには、次のコードを使用します。
axis.VisibleRangeChanged += (s, e) =>
{
// e is VisibleRangeChangedEventArgs
// Assuming axis is NumericAxis
if (e.NewVisibleRange != null && e.NewVisibleRange.Min < 0)
{
// Force minimum visiblerange to zero always
((NumericAxis)sender).VisibleRange = new DoubleRange(0, e.NewVisibleRange.Max);
}
};
MVVM を使用した Axis.VisibleRange のクリッピング
カスタム動作を作成することで、MVVM でも同じことが実現できます。
public class AxisClippingBehavior : Behavior<AxisBase>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.VisibleRangeChanged +=OnVisibleRangeChanged;
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.VisibleRangeChanged -= OnVisibleRangeChanged;
}
private void OnVisibleRangeChanged(object sender, VisibleRangeChangedEventArgs visibleRangeChangedEventArgs)
{
var visibleRangeLimit = AssociatedObject.VisibleRangeLimit;
if (visibleRangeLimit != null)
{
var limitMode = AssociatedObject.VisibleRangeLimitMode;
var range = (IRange)AssociatedObject.VisibleRange.Clone();
range.ClipTo(visibleRangeLimit, limitMode);
AssociatedObject.SetCurrentValue(AxisBase.VisibleRangeProperty, range);
}
}
}