WPF MVVM框架下数据多页面问题

清风随我览江山 2017-07-09 11:30:22
mvvm. frame+page模式下,其中一个page中的某个控件数据绑定到viewmodel中的一个字段,然后用一个线程来实时更新这个字段以确保界面显示的值是当前值,但是page之间切换的时候,这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿。请问各位大佬,这种情况有没有其他的处理办法?感谢感谢
类似下面左侧导航栏切换右边界面的时候不能出现卡顿。
...全文
1090 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 luoqiang_sky 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿 -》换成WPF中的 DispatcherTimer 定时器,它本身就是在线程上执行的,控制它的开始暂定就行了不会出现卡顿。
谢谢版主,不过我要实现这个需求有没有其他更好的办法?我觉得这种用了绑定还要开线程去更新的方法不能体现WPF 的优越性[/quote] 其中一个page中的某个控件数据绑定到viewmodel中的一个字段 -》绑定到viewModel 上数据集合只要支持事件通知 都可以更新到page的某个控件上。[/quote] 支持事件通知之后的某个集合,比如说一个ObervableCollection集合,那么在逻辑类中给这个集合赋值不能直接操作吧?我是用一个中间静态集合来做中间传递载体的
exception92 2017-07-12
  • 打赏
  • 举报
回复
引用 6 楼 luoqiang_sky 的回复:
[quote=引用 5 楼 duanzi_peng 的回复:] [quote=引用 4 楼 luoqiang_sky 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] [quote=引用 2 楼 luoqiang_sky 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿 -》换成WPF中的 DispatcherTimer 定时器,它本身就是在线程上执行的,控制它的开始暂定就行了不会出现卡顿。
谢谢版主,不过我要实现这个需求有没有其他更好的办法?我觉得这种用了绑定还要开线程去更新的方法不能体现WPF 的优越性[/quote] 其中一个page中的某个控件数据绑定到viewmodel中的一个字段 -》绑定到viewModel 上数据集合只要支持事件通知 都可以更新到page的某个控件上。[/quote] 支持事件通知之后的某个集合,比如说一个ObervableCollection集合,那么在逻辑类中给这个集合赋值不能直接操作吧?我是用一个中间静态集合来做中间传递载体的[/quote] 可以啊,用Add方法。[/quote] 如果是在另外一个类中呢?ObervableCollection 可以定义成静态的吗。。。[/quote] 你自己测试了,没使用过静态的。
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
[quote=引用 4 楼 luoqiang_sky 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] [quote=引用 2 楼 luoqiang_sky 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿 -》换成WPF中的 DispatcherTimer 定时器,它本身就是在线程上执行的,控制它的开始暂定就行了不会出现卡顿。
谢谢版主,不过我要实现这个需求有没有其他更好的办法?我觉得这种用了绑定还要开线程去更新的方法不能体现WPF 的优越性[/quote] 其中一个page中的某个控件数据绑定到viewmodel中的一个字段 -》绑定到viewModel 上数据集合只要支持事件通知 都可以更新到page的某个控件上。[/quote] 支持事件通知之后的某个集合,比如说一个ObervableCollection集合,那么在逻辑类中给这个集合赋值不能直接操作吧?我是用一个中间静态集合来做中间传递载体的[/quote] 可以啊,用Add方法。[/quote] 如果是在另外一个类中呢?ObervableCollection 可以定义成静态的吗。。。
exception92 2017-07-12
  • 打赏
  • 举报
回复
引用 4 楼 luoqiang_sky 的回复:
[quote=引用 3 楼 duanzi_peng 的回复:] [quote=引用 2 楼 luoqiang_sky 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿 -》换成WPF中的 DispatcherTimer 定时器,它本身就是在线程上执行的,控制它的开始暂定就行了不会出现卡顿。
谢谢版主,不过我要实现这个需求有没有其他更好的办法?我觉得这种用了绑定还要开线程去更新的方法不能体现WPF 的优越性[/quote] 其中一个page中的某个控件数据绑定到viewmodel中的一个字段 -》绑定到viewModel 上数据集合只要支持事件通知 都可以更新到page的某个控件上。[/quote] 支持事件通知之后的某个集合,比如说一个ObervableCollection集合,那么在逻辑类中给这个集合赋值不能直接操作吧?我是用一个中间静态集合来做中间传递载体的[/quote] 可以啊,用Add方法。
exception92 2017-07-10
  • 打赏
  • 举报
回复
这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿 -》换成WPF中的 DispatcherTimer 定时器,它本身就是在线程上执行的,控制它的开始暂定就行了不会出现卡顿。
exception92 2017-07-10
  • 打赏
  • 举报
回复
引用 2 楼 luoqiang_sky 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿 -》换成WPF中的 DispatcherTimer 定时器,它本身就是在线程上执行的,控制它的开始暂定就行了不会出现卡顿。
谢谢版主,不过我要实现这个需求有没有其他更好的办法?我觉得这种用了绑定还要开线程去更新的方法不能体现WPF 的优越性[/quote] 其中一个page中的某个控件数据绑定到viewmodel中的一个字段 -》绑定到viewModel 上数据集合只要支持事件通知 都可以更新到page的某个控件上。
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
这个线程要么停止要么重新创建一个线程,并且这样的话切换会十分卡顿 -》换成WPF中的 DispatcherTimer 定时器,它本身就是在线程上执行的,控制它的开始暂定就行了不会出现卡顿。
谢谢版主,不过我要实现这个需求有没有其他更好的办法?我觉得这种用了绑定还要开线程去更新的方法不能体现WPF 的优越性

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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