WinRT下GirdView和ListView控件疑难杂症小结
来源:互联网 发布:淘宝卖家团队管理 编辑:程序博客网 时间:2024/06/07 05:48
这几天把我的看漫画的程序的界面调整了一下,在使用GirdView和ListView过程中遇到了不少问题,这里把解决方法记录一下,免得以后少走弯路。
1.ItemsSource绑定后ScrollViewer不复位
ItemsSource绑定后ScrollViewer不复位,有的时候我们需要这一效果,但大多数情况下我们是想让它复位的。在WPF中也有这个问题,我在以前的blog文章中也给出了一种解决方法。在WinRT下解决方法也差不多,在重新绑定数据源前加上这段代码即可:
if (gridView.Items.Count > 0)
{
gridView.ScrollIntoView(gridView.Items[0], ScrollIntoViewAlignment.Leading);
}
这里我就不给依赖属性的封装了,感兴趣的朋友可以自己封装下。
2.ScrollViewer的HorizontalSnapPointsType设置为Mandatory或MandatorySingle时最右边一栏拖动不过来
我比较喜欢将ScrollViewer设置为Mandatory或MandatorySingle,这样滚动项有一种类似磁性的吸靠效果。但这样有一个问题:如果滚动项宽度不一样的时候,最右边一项很容易拖不出来(垂直滚动时也有同样的问题)。
这个问题的原因是右侧没有足够的空白空间,因此改一下ItemsPresenter布局,给右边留一定的空余空间即可:
<GridView.Template>
<ControlTemplate TargetType="GridView">
<Border>
<ScrollViewer x:Name="ScrollViewer">
<ItemsPresenter Margin="0,0,150,0" HeaderTemplate="{TemplateBinding HeaderTemplate}"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</GridView.Template>
这里我的150只是我程序中缺少的空间,大家修改的时候应根据具体情况选择合适的值。另外,这个问题只要使用ScrollViewer就会出现,并不限定于ListView和GridView,解决原理类似。
3.使用ISupportIncrementalLoading的时候有时不会自动增量加载
这个问题主要是用WrapGrid作为Panel的时候有问题,用其它的Panel貌似没有这跟我问题。另外,像我前面的代码那样更改布局也会导致比较容易出,可能和我的IsupportIncrementalLoading实现方式也有关系。目前原因不明,不过设置IncrementalLoadingThreshold貌似能比较有效的解决这一问题。
<GridViewIncrementalLoadingThreshold="2" >
这个数字主要控制预加载的次数,因此不要设置的过大,如果出现这个问题建议先设置为1,如果不行的话再设置为2,再不行设置更大估计也没用什么效果。
4.使用ISupportIncrementalLoading的时候重新绑定ItemsSource不加载
这个问题原因也没用找到,估计还是和和我的IsupportIncrementalLoading的实现方式有关系,关于IsupportIncrementalLoading,目前也找不到太多的资料。目前的规避方案是:创建IsupportIncrementalLoading对象时,先自动加载一页,后续就会自动加载了。
- WinRT下GirdView和ListView控件疑难杂症小结
- ViewStub用于ListView和GirdView
- WinRT下GridView/ListView随滚动条自动加载
- Android低阶 【chapter-7】GirdView和ListView常用的东西
- listview嵌套girdview问题
- listview嵌套girdview问题
- Girdview控件与模板
- Android开发-UI控件:为ListView,GirdView,etc...添加系统自带的下拉刷新功能
- ListView +Girdview 的一个列表
- girdview下DropDownList处理
- ListView和Adapter小结
- 利用convertView优化ListView和GirdView的性能 (Adapter的使用)
- MeasureSpec详解 顺便解决了scrollView嵌套listView和GirdView的冲突
- 最牛用户界面开发WinRT控件Essential Studio for WinRT
- WinRT
- jquery获取服务器控件girdview的行和列的值
- ubuntu 下疑难杂症
- 深入探究 WinRT 和 await
- Java程序发送邮件的两种方法
- Java程序调优---去掉 java 项目中 多余的jar包 方法
- uva 10161-棋盘上的蚂蚁
- C语言内存管理分析
- 开发工具Eclipse 3.x
- WinRT下GirdView和ListView控件疑难杂症小结
- 黑马程序员—算术运算符
- 2013年学习方向
- uva-迷宫题
- HashMap和Hashtable的比较
- 这两个类是java中进行key-value存储、查询的常用类,如果我们学习过哈希算法就会知道key-value查询的效率依赖于如何存储,换句话说,如果存的好,拿出来就容易,存的不好,拿出来就不方便。两
- 面向对象程序设计(OOP)的六大原则
- uva-two trees
- 单实例Singleton设计模式深入浅出