如何访问TwoPaneView的ScrollViewers中的任何内容>>

问题描述 投票:0回答:1

在一个项目中,我实现了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,如下所示:[[[[]]]]]

c# xaml uwp uwp-xaml code-behind
1个回答
0
投票
我设法通过将TwoPaneView类扩展为控件来解决了我的问题。这样,我可以使用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; } } }

© www.soinside.com 2019 - 2024. All rights reserved.