码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-06 18:38:44      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

 

同事这两天在做 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 下载链接

 

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

标签:

原文地址:http://www.cnblogs.com/hebeiDGL/p/4318745.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!