摘要: TabControl是平常用的比较多的布局控件,虽然它是继承自ItemsControl,但是它的ItemsSource实在是很不好用,谁用谁知道。prism里为TabControl提供了TabControlRegionAdapter和TabControlRegionSyncBehavior,参考其部分实现方式让我们也来实现个TabControl的扩展来更好的MVVM。看代码: public class TabControlExtensions { public static IEnumerable GetItemsSource(DependencyObject d) { return (IEn 阅读全文
posted @ 2011-06-28 22:57 超时空饭盒 阅读(2446) 评论(8) 推荐(0) 编辑
摘要: 对于TextBlock我们有时候需要竖直排列它的文字内容。设置TextBlock的显示内容有两种方式,一是设置它的Text属性,二是往它的InlineCollection里添加内容。可以发现我们能同时设置Text属性,并添加InlineCollection信息,但最后显示的会是InlineCollection里的信息,并且不会对Text属性的值产生影响。那么我们是否可以把文本值赋给Text属性,然后再获取相关值并在InlineCollection里进行竖直设置呢。那么我们需要获取TextBlock的TextChanged事件,可惜这个事件并不存在。 public class VerticalT 阅读全文
posted @ 2011-06-26 21:50 超时空饭盒 阅读(2431) 评论(1) 推荐(0) 编辑
摘要: NumericUpDown应该是平常用的比较多的控件了,省去了用TextBox时验证是否是数字等一系列麻烦的事。其允许设置一个小数位数以格式化显示出来的数据,虽然最终获取的Value值和这个小数位没关系,比如在控件中输入3.1415926,如果设了小数位数是2,那么显示的会是3.14,而实际获取的Value还是等于3.1415926。可惜小数位数只能设置为0-15之间的一个准确的整数,而我们的用户也请不一定知道其中的奥妙,他们只想输入多少显示多少。那就添加个行为,用于在用户输入值的时候自动改变设定的小数位数。代码如下: public class AutoDecimalPlacesBehavio 阅读全文
posted @ 2011-06-23 22:21 超时空饭盒 阅读(1489) 评论(0) 推荐(0) 编辑
摘要: 一些平常用到的行为,慢慢整理下。从最简单的开始。TextBox默认的更新行为是在失去焦点时进行的,为了方便在输入框的值发生变化时就即时更新,在Prism里就提供了即时更新绑定的Text的行为,叫做“UpdateTextBindingOnPropertyChanged”。同样的事也发生在PasswordBox里,有时候在绑定Password的时候也需要即时更新输入的绑定值,那么参考这个行为随便写个。整个代码也非常简单,如下: 1 public class UpdatePasswordBindingOnPropertyChanged : Behavior<PasswordBox> 2 阅读全文
posted @ 2011-06-22 20:40 超时空饭盒 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 原来在用一个第三方的ColorPicker控件,结果发现会导致内存泄漏。又找了找开源的那些,没有很满意的,得,自己组装一个吧。基本上是参考以下2篇文章组装的:http://dotnetslackers.com/articles/silverlight/Color-Picker-Control-In-Silverlight-4.aspxhttp://www.codeproject.com/KB/silverlight/Silverlight_ColorPicker.aspx那些关键算法是在第2篇文章里的。站在巨人的肩膀上干起活来就轻便多了。改改样式,修复下已知的Bug,调整下分块逻辑,组装。当然 阅读全文
posted @ 2011-05-16 12:04 超时空饭盒 阅读(696) 评论(2) 推荐(2) 编辑
摘要: 在silverlight开发中用到了多种控件,有时候现有的控件不能满足要求,于是很多第三方提供了丰富的控件。其中就有componentone,当然要收费,$895。而如果未注册的话在引用C1控件的时候会在xaml里自动插入C1:C1NagScreen.Nag="True",如:<C1DateTime:C1DateTimePicker C1:C1NagScreen.Nag="True" />并最终在程序启动的时候弹出如下界面:其实别的功能都挺正常,就是这个框比较讨厌,可恶的框框,还好只弹一次。伪破解只是想办法把这个框给去掉,而不是真正的实现破解 阅读全文
posted @ 2011-02-24 11:30 超时空饭盒 阅读(4425) 评论(14) 推荐(3) 编辑
摘要: 简单介绍下Colorful Expression的使用,给自己做下标记。在美工稀缺的时代,UI上的很多颜色调配都要coder们自己来搞,coder很无奈。还好有kuler这样的站点辅助,而Colorful Expression又在blend中扩展了此项功能,实在是很方便。Colorful Expression可以方便的在Blend中获取kuler上的各种色彩并在xaml中便捷的生成资源文件以供取用。1.下载Colorful.Expression.Blend.4.Beta2.在blend的安装目录(如:C:\Program Files\Microsoft Expression\Blend 4)下 阅读全文
posted @ 2011-02-11 12:02 超时空饭盒 阅读(695) 评论(0) 推荐(0) 编辑
摘要: @jv9的数据验证系列文章:Silverlight实例教程Validation验证系列中已经详细介绍了silverlight下的各种数据验证的方法。我也看着这些文章学习过来的。现在在实践MVVM,需要在MVVM下实现提交数据验证,一步一步来。参考系列文章的第四篇,定义一个验证的基类实现:INotifyPropertyChanged和IDataErrorInfo。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> public abstract 阅读全文
posted @ 2011-01-08 10:52 超时空饭盒 阅读(2338) 评论(2) 推荐(2) 编辑
摘要: 忽然觉得ObservableDictionary好像很有用,只是sl里好像没有,算了,自己写一个吧,bug未知,性能未知。 public class ObservableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, INotifyCollectionChanged { public event NotifyCollectionChangedEventHandler CollectionChanged; private int _index; public new TValue this[TKey key] { 阅读全文
posted @ 2011-01-05 19:36 超时空饭盒 阅读(3161) 评论(0) 推荐(0) 编辑
摘要: 正在实践简单的MVVM。使用ComboBox进行数据下拉选择绑定,然后就遇到问题了。左侧ListBox中有三项数据,ComboBox中只有2项。左边选中绑定到右边。1231.当选中共有的数据项,wang和xu时一切正常。2.当选择xie时,因为ComboBox里没有这个选项,所以ComboBox里应该没有选中项,这是可以理解的。3.但是当再次选择共有的数据项时,ComboBox里的选择就绑不上了。无尽的google之后,或许是google技术欠佳,没有找到好的解决方法。只能自己动手了。先自定义一个控件继承ComboBox。Code highlighting produced by Actipr 阅读全文
posted @ 2010-12-23 19:29 超时空饭盒 阅读(2583) 评论(2) 推荐(3) 编辑