转载:   http://www.cnblogs.com/Jax/archive/2009/10/13/1582128.html 本文的代码都是基于WPF的,对于Silverlight,这些技术也同样适用. (一)INotifyPropertyChanged的使用场合 先写一个最简单的数据绑定,每次点击Button后,TextBlock的值都会自增1. 效果图如下所示: 这里使用了MVVM模式,并把Click事件抽象为了Command. 代码下载:WpfApplication4_1.zip 观察…
问题介绍 当ObservableCollection列表被UI线程占用时,如果在异步线程中调用ObservableCollection,会弹出以下异常: 问题分析 我们使用一个viewModel,在ViewModel中添加ObservableCollection类型的ItemsSource列表. 在列表使用ListBox绑定ItemsSource列表.再由界面触发对ItemsSource的修改. public class ViewModel : INotifyPropertyChanged {…
msdn中   ObservableCollection<T> 类    表示一个动态数据集合,在添加项.移除项或刷新整个列表时,此集合将提供通知. 在许多情况下,所使用的数据是对象的集合. 例如,数据绑定中的一个常见方案是使用 ItemsControl(如 ListBox.ListView 或 TreeView)来显示记录的集合. 可以枚举实现 IEnumerable 接口的任何集合. 但是,若要设置动态绑定,以便集合中的插入或删除操作可以自动更新 UI,则该集合必须实现 INotifyCo…
最近在做列表头部的Carousel展示,Carousel使用的是FlipView展示,另外使用ListBox显示当前页,如下图 我们先设置一个绑定的数据源 public class GlobalResource : INotifyPropertyChanged { private ObservableCollection<string> _items; public ObservableCollection<string> Items { get { return _items =…
一 · WPF中什么是样式? 首先明白WPF中样式属于资源中重要的一种. 同时样式也是属性值的集合,能被应用到一个合适的元素中,或者说能将一组属性应用到多个元素. WPF中样式可以设置任何依赖属性. WPF中样式也支持触发器,通过属性的改变,触发一组活动,包括改变某个控件的样式. WPF中元素只能使用一个样式. 样式有继承的特性,样式可以继承样式. 二 · WPF中什么是模板 ? WPF中模板是用于定义或重定义控件结构,或者说对象的外观. WPF中模板有两类,一个是控件模板(ControlTem…
一.新建一个项目,命名为wpMVVMone,添加一个有关食品信息的类Food.CS,代码如下: public class Food { public string Name { get; set; } public string Description { get; set; } public string iconUri { get; set; } public string Type { get; set; } } 二.添加一个存放图片的文件夹images,然后往里添加若干张图片. 三.新建…
今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出! 1.这就是一个简单wp8数据库增删改查 1.创建数据表Person [Table] public class Person : INotifyPropertyChanged, INotifyPropertyChanging { /// <summary> /// 编号 /// </summary> private int id; [Column(IsPrimaryKey = true, IsDbGenerated =…
如何在WP8中进行数据存储,你首先想到应该是独立存储,但是独立存储似乎存储文件更方便,如果我们希望像处理对象的形式,该怎么办呢,答案就是Sql Server CE. Sql Server CE并不是新鲜东西,它是专门用在移动端的一个工具,它和SQLServer有很大的不同,SQLServer中我们使用Sql语句,而Sql Server CE则要使用Linq处理. 一.创建表 /// <summary> /// 员工表 /// </summary> [Table] class Emp…
员工信息表 EmployeeTable.cs using System.Data.Linq.Mapping; using System.ComponentModel; namespace SQLServerDemo { [Table] public class EmployeeTable : INotifyPropertyChanged, INotifyPropertyChanging { // 定义员工表独立增长ID,设置为主键 private int _employeeId; [Column…
昨天逛论坛,看到一个哥们用WPF做了一个9宫的拼图游戏,发现初学WPF的人都很容易犯一个错误(我也犯过):把WPF当WINFORM用!所以想写一个比较符合WPF风格的版本,于是就抽工作的空余时间做了一个,其实就是很久没写博客了,写个出来凑数o(╯□╰)o.效果如下: (图片为:阿普利亚GPR125) 代码简要解释:主窗口,只是生成核心类,和绑定主要事件(比较简单,就没有使用什么Command之类的了),主要逻辑都在VM类里面 public partial class MainWindow : W…
本篇意在给这几天Win10 Mobile负面新闻不断的某软洗地,想要证明实现一个简单的下拉刷新并不困难.UWP开发更大的困难在于懒惰,缺乏学习的意愿.而不是“某软连下拉刷新控件都没有”这样的想法. 之前我也没有进行过下拉刷新的研究.于是先去google了几篇blog学习了一下,然后再看了某软官方的Sample.(同学们啊官方有下拉刷新的Sample啊!就在Git上啊!不要钱无门槛啊!)学习之后发现实现的方式大体分为两类. 一类是以某软Sample和博客园MS-UAP封装的PullToRefres…
原文:Prism for WPF 搭建一个简单的模块化开发框架(三) 给TreeView加样式做成菜单 昨天晚上把TreeView的样式做了一下,今天给TreeView绑了数据,实现了切换页面功能 上代码把,样式代码 <Style x:Key="MenuTreeViewItem" TargetType="{x:Type TreeViewItem}"> <Style.Triggers> <Trigger Property="Is…
先上结果图: 虽然是跨平台的安卓和ios都可以运行,由于目前只配置了安卓的,ios的先不理. 我们先新建一个项目,跨平台应用: 可移植类库: 可移植项目右键添加新建项 选 Forms MasterDetail Page Xaml 会创建五个文件,看起来是.(名称不要新增为[MasterPage],会报错提示成员名与类型相同) 打开App.xaml.cs public App() { InitializeComponent(); //MainPage = new Casual.MainPage()…
原文:潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据 目前自己对treeview的感慨很多 今天先讲 面对这种 表结构的数据 的其中一种绑定方法,后面多几列其他属性都没关系,例如多个字段, 1  A  0 2  B  0 3  C  0 4  D  1 5  E  2 6  F  4 7  G 1 ... 就是递归型的表结构 然后通过treeview 展示( treeview 的name 叫 tv , collection 是 …
完成这个操作,主要是XAML的代码. 主要思路是通过绑定多路数据,在多路转换器中返回布尔值,在通过数据触发器来设置被选择的全列的背景色. XAML页面主要代码 首先定义DataGridCell <Style TargetType="DataGridCell" x:Key="dgc"> <Setter Property="Tag" > <Setter.Value> <MultiBinding Convert…
一 · WPF中什么是样式? 首先明白WPF中样式属于资源中重要的一种. 同时样式也是属性值的集合,能被应用到一个合适的元素中,或者说能将一组属性应用到多个元素. WPF中样式可以设置任何依赖属性. WPF中样式也支持触发器,通过属性的改变,触发一组活动,包括改变某个控件的样式. WPF中元素只能使用一个样式. 样式有继承的特性,样式可以继承样式. 二 · WPF中什么是模板 ? WPF中模板是用于定义或重定义控件结构,或者说对象的外观. WPF中模板有两类,一个是控件模板(ControlTem…
问题 在开发webform中,wpf中的ObservableCollection<T>,MSDN中说,在添加项,移除项时此集合通知控件,我们知道对一个集合的操作是CURD但是恰恰没有Update的时候提供集合通知,也就是说当我Update的时候,虽然"集合内容“已被修改,但是"控件“却没有实现同步更新INotifyPropertyChanged提供了解决方案. 方案1:INotifyPropertyChanged 传统方式,实现接口INotifyPropertyChange…
xaml: <DockPanel Margin="10">                <StackPanel DockPanel.Dock="Right" Margin="10,0,0,0">                        <Button Name="btnAddUser" Click="btnAddUser_Click">Add user</B…
最近在做taobao的一个卖家应用,需要订阅taobao的订单推送,示例代码如下: 看到上面的OnMessage场景之后,我突然就鬼使神差的在想最近写的一个服务,其中的一个功能是需要定时的轮询一个集合,这样可以方便的把数据取出来,但是 轮训对我来说是被迫的,我急迫需要一种机制对一个集合的数据进行监控,比如List,Dictionary等等,这样我就很方便的对数据进行后续处理,而不是我定时的去轮 训一个集合,然后我就想到了wpf里面有一个玩法叫做“属性依赖”,然后就想到了今天要说的“Observa…
目标:在ListView中,设两列,一列表示人的姓名,一列表示年龄,用ObservableCollection<>来实现. 编程: 1)定义类Person public class ABC:INotifyPropertyChanged { #region INotifyPropertyChanged 成员 public event PropertyChangedEventHandler PropertyChanged; public void RaisePropertyChanged(stri…
今天在项目中使用到这个 ObservableCollection<T> 类,作为数据源集合绑定到控件. 当数据源发生变化,会通知界面显示. 如果用List<T> ,当数据源发生变化就得要重新设置ItemsSource,效率低下. 用ObservableCollection<T> 要注意的是,T必须继承 INotifyPropertyChanged public class Student : INotifyPropertyChanged { private string…
list<T>与ObservableCollection<T>的用法基本上是一样的.区别: list<T>: 当T继承于INotifyPropertyChanged时,如果list<T>中的属性发生改变,则通知UI属性值已发生改变.但当list<T>添加一项时,list<T>就无法通知前端UI了(此时,ObservableCollection<T>闪亮登场). ObservableCollection<T>:…
[源码下载] 重新想象 Windows 8 Store Apps (53) - 绑定: 与 ObservableCollection CollectionViewSource VirtualizedFilesVector VirtualizedItemsVector 绑定 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 绑定 与 ObservableCollection 绑定 与 CollectionViewSource 绑定 与 VirtualizedFile…
例子 先来看一个例子 Person.cs public class Person : ObservableObject,INotifyPropertyChanged { private string _testName; private ObservableCollection<string> _names=new ObservableCollection<string>(); public string TestName { get { return _testName; } s…
问题一:在某一些情况下,我们使用MVVM模式的时候,对于某一个字段(AgeField)需要在前台的很多个控件(A.B.C.D.E)进行绑定,但是如何能够让我们后台字段名改变的时候能够非常方便的改变所有使用了这个字段的控件呢? 回答:使用Element to Element Binding,将AgeFiled绑定到A控件,然后再让B.C.D.E控件绑定A控件的使用AgeField字段的属性. 例如:字段(AgeField)的数据是年龄大小,A.B.C.D.E控件分别是Ellipse.Label.S…
ObservableCollection能通知他变化了也正是因为它实现了INotifyPropertyChanged接口, 在wpf项目中经常会遇到把List<T>转换为ObservableCollection<T>. 总结了一下几种方法: 首先有个 Employee实体类: public class Employee { private string name; public string Name { get { return name; } set { name = valu…
ListView 控件和 DataGridView 控件 ListView 是跟 Winform 中 DataGridView 用法以及显示效果差不多的一个 WPF 控件,可以通过列表的方式方便的显示数据; <!-- ListView 控件 Xaml 代码 --> <ListView Name="listView" Margin="10,10,9.6,10"> <ListView.View> <GridView> &l…
原文链接: http://blog.csdn.net/shanyongxu/article/details/47080685 可观察的集合 如果需要集合中的元素核实删除或添加的信息,就可以使用ObservableCollection<T>类. ObservableCollection<T>类表示一个动态数据集合,在添加项,移除项或刷新整个列表时,刺激和将提供通知. 命名空间:System.Collections.ObjectModle 语法:public class Observa…
以下代码实现了DataGrid的简单绑定List数据源 重点要提一下的是,绑定List数据源,但是不能直接用List.比如下面的代码,使用List<GridItem>只能实现数据修改的绑定,但是数据添加,删除都无法实现双向绑定.所以这里要改用ObservableCollection<GridItem>,其他代码都不用改.只要类型改下即可,WPF内部已经实现了添加,删除等的双向绑定功能. 接下去,就直接上代码了.... 1.Model public class GridModel {…
单个属性是如何去通知,在上一章已经介绍过了,那么集合如何做到属性通知呢?这里要介绍ObservableCollection<T>,字面意思就是用于观察的集合. msdn上给出的定义是:表示一个动态数据集合,在添加项.移除项或刷新整个列表时,此集合将提供通知. 实现了接口INotifyCollectionChanged, INotifyPropertyChanged用于属性更新. 两个同样的集合,一个更新的同时,另外一个也同时更新,关于增删,可以自己尝试. 源码…