不使用DataContext直接将ViewModels绑定到ItemsControl控件
在常规的MVVM设计模式中,都是通过DataContext将ViewModels的一个对象绑定到View的DataContext中,从而完成相应地绑定,在本文中我们将通过另外的一种思路来将ViewModels的一个对象绑定到View的DataContext中。
首先 ,在ViewModel中定义一个该类的静态实例。
private static TaskManager _instance;
public static TaskManager Instance
{
get
{
if (_instance != null)
{
return _instance;
}
else
{
_instance = new TaskManager();
return _instance;
}
}
set
{
if (value != _instance)
{
_instance = value;
}
}
}
private ObservableCollection<TaskThread> _TaskPools =
new ObservableCollection<TaskThread>();
public ObservableCollection<TaskThread> TaskPools
{
get { return _TaskPools; }
set
{
if (value != _TaskPools)
{
_TaskPools = value;
OnPropertyChanged("TaskPools");
}
}
}
然后看一下该ViewModel的构造函数
public class TaskManager:Microsoft.Practices.Prism.Mvvm.BindableBase
{
public TaskManager()
{ for (int i = 0; i < 10; i++)
{
TaskInfo info = new TaskInfo()
{
CurrentMessage="123",
Discription="456",
Name="Hello "+i.ToString(),
Progress=i,
IsCanceled=true,
IsFaulted=true,
IsCompleted=true,
IsInterminate=false
};
Guid guid = Guid.NewGuid();
TaskPools.Add(new TaskThread(guid,info));
}
Instance = this;
}
}
再看一下前台的内容,比如我们要把当前的Instance绑定到一个ItemsControl的ItemsSource属性,那么我们需要进行以下步骤:
a 首先定义ViewModel所在的类的命名空间,xmlns:vm="clr-namespace:TestDemo.ViewModels"
b 然后再给ItemsControl 绑定数据源 <ItemsControl ItemsSource="{Binding Source={x:Static vm:TaskManager.Instance},Path=TaskPools}">,这里需要注意的是要使用x:Static关键字来进行说明,那么现在来说一下x:Static来引用一个类的对象,x:Static引用的代码实体必须是下面的某一项:1 常数 2 静态属性 3 字段 4 一个枚举值,在本例中引用的是静态属性,x:Static扩展用来把某个对象中的属性或域的值赋给目标对象的相关属性,下面举出另外一种方法:
<TextBlock Name="exText" Background="{DynamicResource {x:Static SystemColors.ActiveCaptionBrushKey}}" Height="30" FontSize="24" ></TextBlock>
{x:Static SystemColors.ActiveCaptionBrushKey}静态扩展取得ActiveCaptionBrush的值。
不使用DataContext直接将ViewModels绑定到ItemsControl控件的更多相关文章
- WPF 绑定StaticResource到控件的方法
原文:WPF 绑定StaticResource到控件的方法 资源文件内的属性能否直接通过绑定应用到控件?答案是肯定的. 比如,我们要直接把下面的<SolidColorBrush x:Key=&q ...
- winform快速开发平台 -> 快速绑定ComboBox数据控件
通常我们在处理编辑窗体时.往往会遇到数据绑定.例如combobox控件绑定数据字典可能是我们经常用到的.然而在我的winform快速开发平台中我是如何处理这个频繁的操作呢? 首先,我们要绑定combo ...
- EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor
Grid 根据数据源某列数据不同绑定不同的控件,例如:文本框和下拉框 主要代码写在grid的 plugins: [rowEditing],下面这是定义的rowEditing对象,这里面的要定义成 E ...
- Winform开发中如何将数据库字段绑定到ComboBox控件
最近开始自己动手写一个财务分析软件,由于自己也是刚学.Net不久,所以自己写的的时候遇到了很多问题,希望通过博客把一些印象深刻的问题记录下来. Winform开发中如何将数据库字段绑定到ComboBo ...
- WPF 将数据源绑定到TreeView控件出现界面卡死的情况
首先来谈一下实现将自定义的类TreeMode绑定到TreeView控件上的一个基本的思路,由于每一个节点都要包含很多自定义的一些属性信息,因此我们需要将该类TreeMode进行封装,TreeView的 ...
- Atitit 项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx
Atitit 项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx 1. 场景:应用在项目列表查询场景下1 1.1. 预计初步掌握vue ...
- vue指令:v-model绑定表单控件;v-model与v-bind结合使用
一.v-model绑定表单控件 v-model 双向数据绑定:一般用于表单元素,会忽略表单元素的value.checked.selected的初始值,且将Vue实例的数据作为数据来源. 1. 单行文本 ...
- 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据
动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据:由存储过程决定,如果编写的存储过程可以生成需要呈现的表格则直接绑定,否则要动态生成表格
- 如何在双向绑定的Image控件上绘制自定义标记(wpf)
我们的需求是什么? 答:需要在图片上增加一些自定义标记,例如:2个图片对比时,对相同区域进行高亮. 先上效果图: 设计思路 1.概述 1.通过TargeUpdated事件,重新绘制图片进行替换. 2. ...
随机推荐
- 图上最短路(Dijkstra, spfa)
单源最短路径 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来 ...
- 了解一下Redis队列【缓兵之计-延时队列】
https://www.cnblogs.com/wt645631686/p/8454021.html 我们平时习惯于使用 Rabbitmq 和 Kafka 作为消息队列中间件,来给应用程序之间增加 异 ...
- 爬取伯乐在线文章(五)itemloader
ItemLoader 在我们执行scrapy爬取字段中,会有大量的CSS或是Xpath代码,当要爬取的网站多了,要维护起来很麻烦,为解决这类问题,我们可以根据scrapy提供的loader机制. 导入 ...
- WiFi-ESP8266入门http(2-1)文件系统-复杂结构的网页
https://blog.csdn.net/solar_Lan/article/details/74231360 用到的网页文件:链接:https://pan.baidu.com/s/1vk6xmsY ...
- 转发 .Net平台下ActiveMQ入门实例 https://www.cnblogs.com/madyina/p/4121458.html
1.ActiveMQ简介 先分析这么一个场景:当我们在网站上购物时,必须经过,下订单.发票创建.付款处理.订单履行.航运等.但是,当用户下单后,立即跳转到“感谢那您的订单” 页面.不仅如此,若果没有延 ...
- jenkins使用1----初始化设置
####一.基本设置 1.首先找到系统管理 2.再找到全局配置一把黄色的锁头 3.新增JDK.Maven等 别名随便 下面的值添加jdk在jenkins这台机器上的位置,如果没找到可以点击自动安装,并 ...
- String,StringBuffer,StringBuilder的区别与共同点
1. String与StringBuffer,StringBuilder的区别: String为什么不可变:String存储数据是有final修饰的字符数组private final char val ...
- Python中print和return的区别
有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10742671.html 一.解释 1.ret ...
- D. Artsem and Saunders
一个变换题 给定f(x),[1,n]->[1,n] 构造g(x),h(x)满足: g(h(x))=x [1,n]->[1,m] h(g(x))=f(x) [1,m]->[1,n] 根 ...
- 圆角矩形shader
在游戏中,有时需要对一张矩形图片进行切割,绘制成圆角矩形. circelrect.vert attribute vec4 a_position; attribute vec4 a_normal; at ...