如何访问任何 TwoPaneView 的滚动查看器

How to access any of the TwoPaneView's ScrollViewers

在一个项目中,我实现了 TwoPaneView 如下:

    <TwoPaneView x:Name="LibraryTwoPaneView">
        <TwoPaneView.Pane1>
            <Grid>
                <-- Grid content -->
            </Grid>
        </TwoPaneView.Pane1>
        <TwoPaneView.Pane2>
                <-- Pane content -->
        </TwoPaneView.Pane2>
    </TwoPaneView>

我的问题是,导航到库总是会重置 ScrollViewer 的位置。我习惯在导航到元素时设置 ScrollViewer 偏移量,但我需要访问 ScrollViewer。

请告诉我如何访问 Pane1ScrollViewer。

我设法通过将 TwoPaneView class 扩展为控件来解决我的问题。这样我就可以使用 GetTemplateChild 方法获取 Pane1ScrollViewer 的实例并对其进行操作。

虽然该解决方案符合我的需要,如果您认为更合适,请提供其他方式。

using Windows.UI.Xaml.Controls;

namespace WacomNotesUwp.Controls
{
    public class MyTwoPaneView : TwoPaneView
    {
        private ScrollViewer _pane1ScrollViewer;

        public MyTwoPaneView()
        {
            this.DefaultStyleKey = typeof(MyTwoPaneView);
        }

        public double Pane1VerticalOffset
        {
            get
            {
                if (_pane1ScrollViewer == null)
                {
                    return 0;
                }

                return _pane1ScrollViewer.VerticalOffset;
            }
            set
            {
                if (_pane1ScrollViewer == null)
                {
                    return;
                }

                _pane1ScrollViewer.ChangeView(_pane1ScrollViewer.HorizontalOffset, value, _pane1ScrollViewer.ZoomFactor);
            }
        }

        protected override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            _pane1ScrollViewer = GetTemplateChild("PART_Pane1ScrollViewer") as ScrollViewer;
        }
    }
}