Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何同步两个ScrollViewers?

如何同步两个ScrollViewers?
EN

Stack Overflow用户
提问于 2014-10-29 03:03:48
回答 1查看 1.3K关注 0票数 3

我有四个领域。其中三个在滚动。我必须同步他们的运动,所以如果用户移动areaA (水平的) areaC模拟运动。如果用户移动areaC,则areaA模拟水平移动,areaB模拟垂直移动。

由于有些区域可以在“下面”移动,所以我看不到使用单个ScrollView的方法:

  • C在‘A’下垂直移动
  • C在‘B’下水平移动
  • B在固定区域下垂直移动
  • A水平“在”固定区域下移动

请注意,我正在开发针对WinRT运行时的Windows 8.1应用程序(如果这是它的当前名称的话)。不是银灯。)

关于各方面:

  • areaA和areaC具有相同的宽度
  • areaB和areaC有相同的高度

到目前为止,我管理的是通过订阅ViewChanging事件、从events读取NextView偏移值并在适当的其他滚动体上调用ScrollTo[Vertical,Horizontal]Offset来实现它们的同步。就像我说的,它可以工作,但他们结巴相当一点。另外,我还没有找到一种方法来模仿“滚动视图的结束”,所以现在内容被压缩了一点,向上/向下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//adding event handler
areaCScroller.ViewChanging += HandleAreaCScrolls;

//handler
void HandleAreaCScrolls(object sender, ScrollViewerViewChangingEventArgs e)
{
    areaAScroller.ScrollToHorizontalOffset(e.NewView.HorizontalOffset);
    areaBScroller.ScrollToVerticalOffset(e.NewView.VerticalOffset);
}

我还尝试了FinalView值(导致了StackOverFlowExceptions),并禁用了scrollers上的惰性(这没有帮助,但使他们感觉不那么“酷”)。

,所以我的问题是:我怎样才能更好地做到这一点呢?

我不太熟悉WPF/XAML,所以我很可能会忽略(或者Google很低)一个控件或特性,它可以满足我的需要。开放所有建议(布局本身几乎锁定)。例如,我看起来像这里这里这里,但它们都和我试过的一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-29 06:21:34

我用了来自ScrollViewer的ScrollViewer。对我来说一切都很顺利。下面是来自MainPage.xaml.cs的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        var list = new List<int>();
        for (int i = 0; i < 100; ++i)
        {
            list.Add(i);
        }

        ItemsControl1.ItemsSource = list;
        ItemsControl2.ItemsSource = list;
    }

    private void ScrollViewer1_OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
    {
        if (ScrollViewer1.VerticalOffset != ScrollViewer2.VerticalOffset)
        {
            ScrollViewer2.ScrollToVerticalOffset(ScrollViewer1.VerticalOffset);
        }
    }

    private void ScrollViewer2_OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
    {
        if (ScrollViewer1.VerticalOffset != ScrollViewer2.VerticalOffset)
        {
            ScrollViewer1.ScrollToVerticalOffset(ScrollViewer2.VerticalOffset);
        }
    }

和来自MainPage.xaml的XAML代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <ScrollViewer Grid.Column="0"
                  x:Name="ScrollViewer1"
                  ViewChanged="ScrollViewer1_OnViewChanged">
        <ItemsControl x:Name="ItemsControl1">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>
    <ScrollViewer Grid.Column="2"
                  x:Name="ScrollViewer2"
                  ViewChanged="ScrollViewer2_OnViewChanged">
        <ItemsControl x:Name="ItemsControl2">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>
</Grid>

试试这个,希望能帮上忙。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26628687

复制
相关文章
如何在团队中做好Code Review
想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处
KenTalk
2020/01/20
1.3K0
如何在团队中做好Code Review
如何在团队中做好Code Review
想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处
KenTalk
2019/12/23
1.4K0
如何在团队中做好Code Review
实战教程:如何在API监控中实现高效报警和通知
因一业务需要,想要对API服务接口添加一些监控,以帮助跟踪应用程序的性能、问题和用户活动等。实现监控的方式有多种多样的方式,以下是一些常用的方法:
用户3578099
2023/09/27
8060
实战教程:如何在API监控中实现高效报警和通知
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
How to implement a distributed and auto-scalable WebSocket server architecture on Kubernetes一文中虽然解决是WebSocket长连接问题,但可以为其他长连接负载均衡场景提供参考价值
charlieroro
2023/09/14
1K0
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
如何在Python中扩展LSTM网络的数据
您的序列预测问题的数据可能需要在训练神经网络时进行缩放,例如LSTM递归神经网络。 当网络适合具有一定范围值(例如10s到100s的数量)的非标度数据时,大量的输入可能会降低网络的学习和收敛速度,并
AiTechYun
2018/03/02
4.1K0
如何在Python中扩展LSTM网络的数据
openstack如何扩展API之二:扩展原有核心API
openstack使用stevedore的插件机制,来提供了扩展接口功能(openstack官方称为Extending the API)。有了插件机制,我们在开发新的OpenStack功能时,通过扩展接口功能,在不改变openstack核心代码的前提下,就可以实现对OpenStack的功能扩展。
虚拟化云计算
2018/04/08
1.7K0
openstack如何扩展API之二:扩展原有核心API
如何在小程序中引入自有 API?
自定义 API,顾名思义为开发者为满足自身需求而自己创建的一个 API。那么自己创建的这个 API 能起到什么效果和作用呢。
海岛船长加西亚
2022/03/24
7740
招聘信息 | 微软气象团队招聘
你想成为一个高知名度、以成长为导向的团队中的一员,拥有远大的目标和潜力,为十亿用户提高生活质量吗?
郭好奇同学
2020/12/23
2K0
招聘信息 | 微软气象团队招聘
DOM扩展Selectors API
Selectors API是基于css选择器获取DOM的匹配模式,我们很早之前用的jQuery就有按照css选择器查询DOM元素获取引用。Selectors API有三种常用的方法就是querySelector(),querySelectorAll(),matches()。
大熊G
2022/11/14
3070
DOM扩展Selectors API
微软MS13-046 本地权限提升漏洞
    前几天在习科上看到的帖子,给出了一个exp,关于特权提升漏洞,来源:http://bbs.blackbap.org/thread-4431-1-1.html
phith0n
2020/10/16
4580
微软MS13-046 本地权限提升漏洞
如何在SwiftUI中实现interactiveDismissDisabled
由于健康笔记[2]中数据录入都是在Sheet中进行的,为了防止用户在录入过程中由于误操作(使用手势取消Sheet)丢失数据,因此,从最初的版本开始,我就一直使用各种手段加强对Sheet的控制。
东坡肘子
2022/07/28
3.9K0
如何在SwiftUI中实现interactiveDismissDisabled
如何在 MongoDB 中实现事务
在 MongoDB 中,事务可以用于在一个或多个集合上执行多个操作。事务可以帮助确保数据的一致性和可靠性。
玖叁叁
2023/04/14
2.6K0
微软发布情绪识别API
2015年11月11日,微软宣布其Oxford项目将开放一个可用于情绪识别的API。微软一位负责技术与研究的人员表示该API可帮助市场营销人员评估顾客对商店展示效果、电影或食物的反应。商家可以用这个软件来创造一个客户工具,例如一个可以从照片中识别情绪并根据不同情绪给出不同选项的应用。根据微软介绍,该API应用该公司的云端情感识别算法来确定特定时刻某张照片中人的情绪。 微软表示,该API以一张图片作为输入,从其中每张人脸的多个表情中找到表情,并利用人脸识别应用程序画出人脸的边界框。这些情绪与面部表情相关,而表
人工智能快报
2018/03/13
2.6K0
如何在Python中为长短期记忆网络扩展数据
用于序列预测问题的数据可能需要在训练神经网络(如长短期记忆递归神经网络)时进行缩放。
bestLR
2018/02/02
4.1K0
如何在Python中为长短期记忆网络扩展数据
如何在远程会议的时候静音吃薯片?微软团队用AI去除视频噪声
上个月,Microsoft宣布,其与Slack,Facebook Workplace以及Google的Hangouts Chat的竞争对手Teams的每日活跃用户已超过4400万。这一里程碑却掩盖了其“稍后”发布的一些新功能。大部分功能都很简单明了:举手功能表明你有话要说;离线和低带宽支持,即使在网络连接不畅或没有网络情况下,也能阅读聊天消息并回复;以及将聊天弹出到一个单独窗口。其中还有一项实时噪声抑制功能吸引了大家眼球 - Microsoft演示AI如何在通话过程中减少让人分心的背景噪声。
大数据文摘
2020/04/28
1.2K0
如何在远程会议的时候静音吃薯片?微软团队用AI去除视频噪声
[享学Netflix] 十、Archaius对Commons Configuration核心API Configuration的扩展实现
上篇文章体验了一把Netflix Archaius的使用,感受到了它对配置管理上的便捷性。或许有小伙伴会说,配置管理上它和Apache Commons Configuration功能上有点重叠,其实不然。 他俩的关系不是功能重叠,而是Netflix Archaius是对Apache Commons Configuration的一种延伸,并且前者依赖于后者的实现。
YourBatman
2020/03/18
1.3K0
点击加载更多

相似问题

微软团队调用API

16

MS团队UI微软bot框架的定制

15

通过API Postman与微软团队集成

13

微软团队Tabs

11

微软团队- pymsteams

122
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文