我又来了……请教个关于mvvm数据绑定的问题

coffee_sugar 2013-08-15 09:18:06
好吧、其实我这是win8里遇到的。
先说说我要做的事情:
我给一个listview的ItemsSource绑定值,然后给它的selectedIndex指定一个数。

我用的mvvmLight做的,在vm中先给listView的ItemsSource绑定值,然后给他的selectedIndex也绑个值。
ok,问题出来了!我发现他这个值的绑定并不是按顺序进行的,比如我本来是先绑的ItemsSource然后绑的selectedIndex,结果总是报异常、大致内容是说我的selectedIndex越界了,也就是说在listview的数据源绑定完成前它就开始绑定selectedindex了。我尝试在给selectedIndex绑定值前用await Task.Delay(300)这种方式延迟了下,然后就没有异常程序正常执行了!
我想问的是,有没有什么方法获取或设置绑定的顺序?又或者有什么方式让绑定按我预想的顺序来进行呢?
...全文
137 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gnimgnot 2013-08-16
  • 打赏
  • 举报
回复
来晚了,结吧。哈哈
coffee_sugar 2013-08-16
  • 打赏
  • 举报
回复
多来点人接分结贴了= =
coffee_sugar 2013-08-16
  • 打赏
  • 举报
回复
引用 2 楼 kzl332058242 的回复:
[quote=引用 1 楼 h4715582 的回复:] 这主要是你 ItemSource 还没加载完 要加载完再去执行SelectIndex 或者直接绑定SelectValue 来控制显示值
那要怎么知道ItemSource是否加载完成呢? [/quote] 尴尬了、自己搞出来了又……压根儿没必要那么复杂的去想、直接在给selectedIndex赋值的时候来一段等待代码就ok了

async Task Wait()
        {
            while (this.listView.ItemsSource == null)
                await Task.Delay(10);
        }
gnimgnot 2013-08-16
  • 打赏
  • 举报
回复
引用 6 楼 kzl332058242 的回复:
[quote=引用 5 楼 cuit 的回复:] 来晚了,结吧。哈哈
我再请教个问题啊、要不然觉着这100分亏的慌…… win8中怎么对对象进行深拷贝啊?[/quote] 值类型直接赋值,引用类型挨个成员赋值
coffee_sugar 2013-08-16
  • 打赏
  • 举报
回复
引用 1 楼 h4715582 的回复:
这主要是你 ItemSource 还没加载完 要加载完再去执行SelectIndex 或者直接绑定SelectValue 来控制显示值
那要怎么知道ItemSource是否加载完成呢?
coffee_sugar 2013-08-16
  • 打赏
  • 举报
回复
引用 5 楼 cuit 的回复:
来晚了,结吧。哈哈
我再请教个问题啊、要不然觉着这100分亏的慌…… win8中怎么对对象进行深拷贝啊?
荣哥 2013-08-15
  • 打赏
  • 举报
回复
这主要是你 ItemSource 还没加载完 要加载完再去执行SelectIndex 或者直接绑定SelectValue 来控制显示值

7,660

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧