wpf绑定全局静态变量(mvvm)

原文 wpf绑定全局静态变量(mvvm)

在实际的开发中,有一些集合或者属性可能是全局的,比如当你做一个oa的时候,可能需要展示所有的人员,这时这个所有的人员列表显然可以作为全局参数,比如这里有一个全局的静态属性UserList。而你在使用mvvm做wpf开发的时候,一般每个view都已经指定好了viewmodel。而viewmodel显然是不包含UserList。这时如果你想在绑定了viewmodel里面绑定UserList给某个ListBox该怎么办呢。首先你可以在你的viewmodel里面定义一个UserList指向全局静态变量的引用,就像下面这样:

public List<User> UserList{ get=>return Global.UserList; }

这是一个方法,但这个方法会让你的viewmodel变得臃肿。实际上wpf是支持静态参数的绑定的,在xaml里面这样写:

ItemsSource="{Binding Source={x:Static local:GlobalData.UserList}}"

或者ItemsSource="{x:Static local:GlobalData.UserList}"

这样,当你的任何一个模块,改变了UserList里面的东西,所有前端用到这个列表的,都会收到属性变更通知。

再比如,你要在某个件上绑定System.DateTime.Now,则这么写:

<TextBlock Grid.Row="1" Text="{Binding Source={x:Static system:DateTime.Now},StringFormat='yyyy-MM-dd HH:mm:ss '}"/>

当然,要定义一下system:

xmlns:system="clr-namespace:System;assembly=mscorlib"。

事实上这种绑定是无意义的,因为Now只是普通的属性,并没有实现属性变更通知,因此你的textblock显示的时间不过是第一次加载的时间。它并不会随着时间的变化而变化。

这里面,source的作用其实就是指定源,通常我们绑定,只需要设定path,比如path=Name或者直接绑定某个属性,比如Text="{Binding Name}",这样系统会自动从你设定的DataContext里面找Name这个属性。而如果你指定了Source,系统便不会在你的DataContext里面查找,而是从指定的Source里面查找。因此,假设你的GlobalData里面有一个静态实体(Model),它里面有一个UserList,那么你应该这么写:

ItemsSource="{Binding UserList, Source={x:Static local:GlobalData.Model}}"
---------------------
作者:returnTrue999
来源:CSDN
原文:https://blog.csdn.net/dap769815768/article/details/82149363
版权声明:本文为博主原创文章,转载请附上博文链接!

posted on 2018-12-20 00:25 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10147107.html

wpf绑定全局静态变量(mvvm)相关推荐

  1. wpf绑定全局静态变量并且实现变更通知(mvvm)

    在实际的开发中,有一些集合或者属性可能是全局的,比如当你做一个oa的时候,可能需要展示所有的人员,这时这个所有的人员列表显然可以作为全局参数,比如这里有一个全局的静态属性UserList.而你在使用m ...

  2. 【转载】wpf绑定全局静态变量并且实现变更通知(mvvm)

    这篇看了之后,很有启发,也很有用!,分享给大家 以下是转载内容. ---------------- 版权声明:本文为CSDN博主「returnTrue999」的原创文章,遵循CC 4.0 BY-SA版 ...

  3. 【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别...

    局部变量: 创建在栈区(向下生长),生命周期存在于当前作用域中.     创建时若未初始化,则为随机值. 全局变量: 创建在static区,生命周期一直存在. 创建时若未初始化,则为0. 静态局部变量 ...

  4. 全局变量和全局静态变量

    主要区别就是作用域:全局变量定义的变量可以被其他文件所看见(即可以被其他文件extern),全局静态变量的作用范围只限于本文件中. 关于在头文件中定义:在#include之后会在cpp文件中展开,相当 ...

  5. php 全局 静态变量,php的static关键字和全局变量

    1.全局变量[其不属于面向对象的思想,因为其放在对象之外的],面向对象有一个特点,其实封装的,php希望其所有的成员都应该放在类中:php的面向对象是基于面向对象的,不是纯粹面向对象的:也就是其可以面 ...

  6. 【原创】 关于全局静态变量初始化

    今天碰到个问题,直接上代码: Class Program{private static string _str= "StringValue";private static Uri ...

  7. python的全局静态变量

    背景: User有个自增的id,需要每次创建User的时候,id都自动+1 实现: user.py #!/usr/bin/python2.4 class User(object): ID = 1000 ...

  8. 局部静态变量和全局静态变量

    静态变量的类型说明符是static. 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能 ...

  9. vue引入全局静态变量_vue-cli4 全面配置(持续更新)

    https://github.com/staven630/vue-cli4-config​github.com vue-cli4 全面配置(持续更新) 细致全面的 vue-cli4 配置信息.涵盖了使 ...

  10. asteroids模板 游戏 java_在高级Java游戏中存储全局/静态变量的最佳方法是什么?...

    有一个原因是不经常使用静态字段,原因是静态字段的灵活性不如非静态字段,因为静态字段只能有一个副本,但非静态字段可以容纳每个对象实例的值不同. 通过使用静态字段,您将限制自己只有一个玩家.如果你想做多人 ...

最新文章

  1. 多线程Java Socket编程示例
  2. python 绘制柱状图-Python使用Plotly绘图工具,绘制柱状图
  3. 学python那本书比较好-看了许多python书后!我发现学好python这三本书必看
  4. 如何应对“中年危机”
  5. 2020-12-03 python 字典 key 和value 互换
  6. 并行编程中的“锁”难题
  7. k8s架构组件功能介绍
  8. Android官方开发文档Training系列课程中文版:后台服务之IntentService的使用
  9. C++之文件操作探究(二):读文件——文本文件
  10. aspose-cell 使用
  11. HTML和小程序的 12 种 flex 布局
  12. TensorRT:AttributeError: 'module' object has no attribute 'Logger'
  13. Proteus仿真51单片机
  14. 带动画的自定义view——做一个移动的箭头
  15. AXUI百度地图坐标拾取系统超强升级,功能更多更实用!
  16. python 绘制qq图
  17. IT公司盈利模式分析
  18. 利用ckplayer播放视频
  19. 数据库常见笔试面试题
  20. 【Centos】EFAK(kafka-eagle)对ZK、Kafka可视化管理工具容器化安装与配置

热门文章

  1. Flex皮肤制作教程
  2. COM中关于使用DLL的一些知识点
  3. 「代码随想录」70. 爬楼梯【动态规划】(完全背包解法)
  4. inDesign教程,如何设置名片?
  5. 苹果mac文档处理工具:microsoftword
  6. 苹果Mac定制化App开发神器:FileMaker Pro
  7. SoundSource 5 for Mac(音频控制工具)
  8. Mac电脑硬件温度控制:TG Pro
  9. Mac如何解压rar,zip等各种格式文件
  10. android获取某应用的帧数据