博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【UWP】FlipView绑定ItemsSource,Selectedindex的问题
阅读量:6269 次
发布时间:2019-06-22

本文共 2334 字,大约阅读时间需要 7 分钟。

最近在做列表头部的Carousel展示,Carousel使用的是FlipView展示,另外使用ListBox显示当前页,如下图

 

我们先设置一个绑定的数据源

public class GlobalResource : INotifyPropertyChanged    {        private ObservableCollection
_items; public ObservableCollection
Items { get { return _items = _items ?? new ObservableCollection
{ Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), }; } set { _items = value; OnPropertyChanged(nameof(Items)); } } public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }

Items作为数据源绑定在FlipView和ListBox上,布局代码如下

MainPage.xaml

一切正常显示

问题:

  下面我们需要修改数据源

var globalResource = (GlobalResource) Resources["GlobalResource"];    globalResource.Items.Clear();    for (var i = 0; i < 10; i++)    {        globalResource.Items.Add(Guid.NewGuid().ToString());    }    Debug.WriteLine("flipView.SelectedIndex = {0}", flipView.SelectedIndex);    Debug.WriteLine("listBox.SelectedIndex = {0}", listBox.SelectedIndex);

  虽然数据源变了,但是并没有选中当前页(第一个点不为蓝色),通过输出信息发现SelectedIndex都是0,并没有改变

  跟踪发现,调用ObservableCollection.Clear方法的时候SelectedIndex都被设为了-1,Add第一个的时候SelectedIndex被置为0,数据源和相关数据都改变了,不知道为什么样式没有出发(VisualState)由于不知道ListView内部实现,我们无法得知具体原因是啥

解决:

  对于上面问题,可以通过下面方式解决

  重新改变SelectedIndex让ListBox更新样式

var globalResource = (GlobalResource) Resources["GlobalResource"];    globalResource.Items.Clear();    for (var i = 0; i < 10; i++)    {        globalResource.Items.Add(Guid.NewGuid().ToString());    }    flipView.SelectedIndex = -1;    flipView.SelectedIndex = 0;

 

Demo:

  

 

转载地址:http://byppa.baihongyu.com/

你可能感兴趣的文章
ffmpeg 如何选择具有相同AVCodecID的编解码器 (AVCodec)
查看>>
真正解决 Windows 中 Chromium “缺少 Google API 密钥” 的问题
查看>>
Spring 之 AOP
查看>>
软件项目管理|期末复习(二)
查看>>
直接调用VS.net2005中的配置界面
查看>>
程序员的自我修养五Windows PE/COFF
查看>>
关于字符集,编码格式,大小端的简单总结
查看>>
js string 转 int Number()
查看>>
课堂练习:ex 4-20
查看>>
20155328 2016-2017-2 《Java程序设计》 第8周学习总结
查看>>
python操作redis--string
查看>>
echarts图表初始大小问题及echarts随窗口变化自适应
查看>>
Inherits、CodeFile、CodeBehind的区别
查看>>
创建一个SimpleDlg
查看>>
使用XML生成菜单
查看>>
udp,tcp对于socket的写法
查看>>
第二周个人赛
查看>>
推断Windows版本号新方法
查看>>
2017-4-18 ADO.NET
查看>>
RSuite 一个基于 React.js 的 Web 组件库
查看>>