就在这里,
来自文档:在 Zoom 和 Pan 上裁剪 Axis.VisibleRange。
高级 VisibleRange 裁剪和操作
Axis.VisibleRangeLimit是一个有用的 API,可确保轴在缩放到范围时剪辑VisibleRange 。但是,它不会阻止用户滚动超出该范围。为此,您需要进行一些小的修改:
在代码中裁剪 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);
}
}
}