4、数据绑定控件 ListBox 的一个 Bug

同事这两天在做 universal 项目的时候,遇到一个诡异的问题,即使设置 Page 为

缓存状态, 在页面跳转后, ListBox 的位置不会被缓存,怀疑是页面的缓存状态出了问题:

this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;

写了一个 demo,测试了一下:

1)在程序启动的时候,默认显示 PivotPage 页面。分别放置 ListView、 ItemsControl、ListBox 控件:

<Pivot Title="Pivot">
    <PivotItem Header="PivotItem 1">
        <Grid>
            <ListView x:Name="lv1" ItemsSource="{Binding list}"/>
        </Grid>
    </PivotItem>

    <PivotItem Header="PivotItem 2">
        <Grid>
            <ScrollViewer>
                <ItemsControl x:Name="lv2" ItemsSource="{Binding list}"/>
            </ScrollViewer>
        </Grid>
    </PivotItem>

    <PivotItem Header="PivotItem 3">
        <Grid>
            <ListBox IsTapEnabled="False" x:Name="lv3" ItemsSource="{Binding list}"/>
        </Grid>
    </PivotItem>
</Pivot>
<Button Content="Page2" Click="Button_Click" HorizontalAlignment="Left" Margin="261,531,0,0" VerticalAlignment="Top"/>

2)在 C# 页面,进行数据绑定:

 public List<string> list { get; set; }

 public PivotPage()
 {
     this.InitializeComponent();

     this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;

     // 填充字符串
     list = new List<string>();

     for (int i = 1; i < 200; i++)
     {
         list.Add("测试内容 : " + i);
     }

     // 设置当前页面的上下文为 this
     this.DataContext = this;
 }

放置一个跳转按钮:

 private void Button_Click(object sender, RoutedEventArgs e)
 {
     Frame.Navigate(typeof(Page2));
 }

页面启动后,分别滑动  ListView、ItemsControl、ListBox 控件:

3)点击 按钮,跳转到 Page2, 然后再 点击 GoBack 按钮:

回到 PivotPage 后, 滑动 ListBox 控件,就会诡异的返回到第一项。而 ListView 和 ItemsControl 没有这个问题:

针对 ListBox 的这个 bug,不知微软后面会不会修复。

另外,我怀疑,在 store app 中,ListBox 其实是作为一个  multiple ListPicker 用的,

数据绑定重点使用 ListView 和 GridView 了,个人的猜测 ....

Demo 下载链接

时间: 2024-10-12 11:03:11

4、数据绑定控件 ListBox 的一个 Bug的相关文章

ASP.NET数据绑定控件

数据绑定控件简介 数据绑定分为:数据源 和 数据绑定控件 两部分,数据绑定控件通过数据源来获得数据,通过数据源来隔离数据提供者和数据使用者,数据源有:SqlDataSource,AccessDataSource,ObjectDataSource,LinqDataSource,XmlDataSource 等大部分不会直连接数据库,所以SqlDataSource,AccessDataSource不会使用ObjectDataSource 是WEB开发中应用最广的数据源,也能很容易的进行数据库切换数据绑

ASP.NET常用数据绑定控件优劣总结

本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已经封装的很好了,稍微有一些基础的朋友都可以很容易的上手使用,所以本文不涉及具体控件的使用,只在于分析各自的优劣点,但是在下一篇文章里,我会主要讲一下ListBox.GridView.Repeater这三个数据绑定控件的“高效分页”,ListBox和GridView内置的有分页,但是其效率太低了,少量

ASP.NET常用数据绑定控件优缺点分析总结

ASP.NET常用数据绑定控件优缺点分析总结 本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已经封装的很好了,稍微有一些基础的朋友都可以很容易的上手使用,所以本文不涉及具体控件的使用,只在于分析各自的优劣点,但是在下一篇文章里,我会主要讲一下ListBox.GridView.Repeater这三个数据绑定控件的“高效分页”,ListBox和Gri

如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误

原文:如何解决FormView中实现DropDownList连动选择时出现 "Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误 FormView控件是可及显示.修改.添加.删除为一体的控件,感觉很好用,可是昨天发现了一个可以说是它的一个Bug吧,我是想要实现下拉框的联动效果,比如在A下拉框选择了省对应B的下拉框会把对应A中省的市显示在B下拉框中,我想要实现的是校区和对应校区建筑的联动效果,单纯的这种效果很好实现比如下面的代码  

数据绑定控件之Repeater

引言 前几篇的文章在说AJAX的内容,利用AJAX技术能够开发出高效运行的网站应用程序,不过在进行B/S项目开发时只拥有AJAX技术是远远不够的,踏入到B/S要学的东西会更多,但相较C/S的复杂逻辑结构来说B/S在开发时还是很简单的. 在开发B/S项目时,常常会用到数据绑定控件,.NET平台已经对这些控件进行了良好的封装,只要稍有经验的程序猿很快就能够上手使用这些数据控件,所以接下来的几篇文章将会讨论数据控件,首先将会从数据控件的细节入手讨论ListView.GridView.Repeater.

Asp.Net北大青鸟总结(五)-数据绑定控件

在前面的博客我已经介绍了关于一个特殊控件也是我们经常用到的控件gridview的使用实现真假分页.这也是属于绑定控件的一种使用,那么我们接下来来介绍一下数据绑定这门技术吧!  一.数据绑定的概念 数据绑定是一项非常简单.有效的技术.asp.net采用数据绑定技术将显示控件的摸个属相与数据源绑定在一起.当数据源中的数据发生变化且重新请求网页时,被绑定对象中的属性将随数据源而改变. 二.数据绑定的应用范围 数据绑定的应用范围非常广泛,数据集.数组.集合.XML文档,甚至一般的变量,都可以作为数据源,

Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用

原文:Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用 "/vs2005"应用程序中的服务器错误.-------------------------------------------------------------------------------- Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有

.NET 几种数据绑定控件的区别

GridView 控件 GridView 控件以表的形式显示数据,并提供对列进行排序.分页.翻阅数据以及编辑或删除单个记录的功能. 特征:一行一条记录,就像新闻列表一样:带分页功能. DataList 控件 DataList 控件以表的形式呈现数据,通过该控件,您可以使用不同的布局来显示数据记录,例如,将数据记录排成列或行的形式.您可以对 DataList 控件进行配置,使用户能够编辑或删除表中的记录.(DataList 控件不使用数据源控件的数据修改功能:您必须自己提供此代码.)DataLis

GridView 数据绑定控件的使用

GridView 控件以表格的形式显示数据,并提供对数据进行排序,选择,编辑,删除等功能. GridView能够完成的功能具体可以总结如下: 1,通过数据源控件将数据绑定到GridView控件 2,对GridView控件内的表格数据进行选择编辑和删除操作 3,对GridView控件内的表格数据进行排序 4,对GridView控件内的数据进行分页显示 5,通过指定GridView控件的模板列,创建自定义用户界面 6,通过GridView控件提供的事件模型,完成用户的复杂操作 7,可以自定义数据显示