gpt4 book ai didi

c# - 绑定(bind)/绑定(bind)两个 LongListSelectors 的滚动位置

转载 作者:太空狗 更新时间:2023-10-29 23:07:54 25 4
gpt4 key购买 nike

在我的 Windows Phone 应用程序中,我有两个 LongListSelectors并排在页面上。我想做到这一点,以便当用户滚动其中一个时,另一个滚动相同的量。

两个 LongListSelectors 具有始终具有相同高度的 ItemTemplates。您可以将其视为模仿 Excel 中的卡住列(左侧的 LongListSelector 仅垂直滚动,右侧的水平和垂直滚动。

任何人都可以为我指明正确的方向吗?如果无法通过绑定(bind)完成,我愿意在代码隐藏或其他任何方式中进行。

最佳答案

您可以通过连接到 LongListSelector 的 ViewportControl 来完成此操作。当一个 LLS 的视口(viewport)改变时,改变另一个 LLS 的视口(viewport)。我猜你只需要两个 LLS,所以一个 DependencyProperty 应该可以解决问题。我写了a blog包含有关如何实现此目标的所有详细信息。

简而言之,就是需要一个 DependencyProperty

public double ScrollPosition
{
get { return (double)GetValue(ViewPortProperty); }
set { SetValue(ViewPortProperty, value); }
}

public static readonly DependencyProperty ViewPortProperty = DependencyProperty.Register(
"ScrollPosition",
typeof(double),
typeof(MyLongListSelector),
new PropertyMetadata(0d, OnViewPortChanged));

并在视口(viewport)改变时设置属性。

private void OnViewportChanged(object sender, ViewportChangedEventArgs args)
{
ScrollPosition = _viewport.Viewport.Top;
}

然后将属性绑定(bind)到您的 xaml 中的每个 LLS

<dataBoundApp1:MyLongListSelector x:Name="MainLongListSelector" ItemsSource="{Binding Items}"
ScrollPosition="{Binding ScrollPosition, ElementName=MainLongListSelector2, Mode=TwoWay}"/>
<dataBoundApp1:MyLongListSelector x:Name="MainLongListSelector2" ItemsSource="{Binding Items}" Grid.Column="1"
ScrollPosition="{Binding ScrollPosition, ElementName=MainLongListSelector, Mode=TwoWay}"/>

关于c# - 绑定(bind)/绑定(bind)两个 LongListSelectors 的滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com