ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:105.63KB ,
资源ID:7732533      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7732533.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《深入浅出WPF》笔记绑定篇二Word文档格式.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

《深入浅出WPF》笔记绑定篇二Word文档格式.docx

1、 if (double.TryParse(value.ToString(), out d) if (d = 0 & d = 80) return new ValidationResult(true, null); return new ValidationResult(false,输入数字不合理!);B、XAML代码View Code TextBox x:Name=textbox1 Margin=5/TextBoxSlider x:slider1 Minimum=-10 Maximum=110/Slider/StackPanel/WindowC、cs代码CS using System.Wind

2、ows;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using CommonLib;namespace BindingOfValid / / MainWindow.xaml 的交互逻辑/summary public partial

3、class MainWindow : Window public MainWindow() InitializeComponent(); /新建绑定实例,指定源和路径 Binding binding = new Binding(Value)Source=this.slider1; /设置更新绑定源的方式 binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; /创建验证条件 RangeValidationRule rvr = new RangeValidationRule(); /默认数据源的数据都是正确的,如果加上

4、下面的验证目标更新,则也会验证源的数据是否合法 rvr.ValidatesOnTargetUpdated = true; /向ValidationRules添加验证条件 binding.ValidationRules.Add(rvr); /设置通知错误的提示,我们可以把它想象为报警器,它会沿着目标,传到安装处理报警的地方 binding.NotifyOnValidationError = true; binding.NotifyOnTargetUpdated = true; /添加对源和目标的更新的监视,设置ToolTip为空 this.TargetUpdated += new EventHa

5、ndler(MainWindow_TargetUpdated); this.SourceUpdated += new EventHandler 0) this.textbox1.ToolTip = Validation.GetErrors(this.textbox1)0.ErrorContent.ToString(); e.Handled = true;效果图如图1:图1本段代码重在理解Binding的数据校验,还有很多细节要进行优化。再总结一下实现过程:定义一个验证规则和Binding,把验证规则添加到绑定的验证规则集里面,开启Binding的报警器(NotifyOnValidationEr

6、ror),为指定的UI控件添加路由事件来做出相应的反应。1.2Binding的数据转化在XAML的语法的记录中有出现过转化(TypeConverter),主要是实现XAML标签的Attribute与对象的Property进行映射。今天要记录的是绑定的数据的转化,在这里可以把Binding比作一笔交易,买家想要某种东西,但是卖家给的却不是成型的产品,所以需要去加工才能成为买家最终想要的产品。反过来说,买家有的时间不给卖家钱,而是给的黄金或其他有价值的东西,那么如果卖家用钱的话,他要去转化成现金。同样在使用Binding时, 这样的例子也是屡见不鲜了,最明显的我们要把字符串类型的性别转化成布尔型的

7、性别然后绑定到指定的CheckBox上面或者是其他控件上面。下面举个例子来说明一下,把飞机型号转化成图片路径显示出来,并且可以安排飞机的位置,(OnAir表示在空中,OnLand表示在陆上,Unknow表示位置保密),可能我画的飞机不像,但重在说明问题。A、先定义一个飞机类:Plane.cs namespace Chapter_04 public class Plane public string Category get; set; public string Area get; public string State get;B、写两个转化类PlaneConVerter和StateOfPl

8、ane,并且都实现IValueConverter这个接口,写代码的时间可以直接在IValueConverter上面右击,实现接口,要实现的方法就能搞定了,剩余的就是一些算法。代码如下: /TypeConverter public class PlaneConVerter:IValueConverter /单向绑定 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) return Icons + value.ToString

9、() + .png public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) throw new NotImplementedException(); public class StateOfPlane : IValueConverter /双向绑定 /源向目标的转化 switch (value.ToString() case : return true; return false; default: return nu

10、ll; /目标向源的转化 bool? s = (bool?)value; switch (s) case true : return case false : case null :C、前后台代码:XAML Chapter_04.ConvertInBindinglocal=clr-namespace:Chapter_04ConvertInBinding250Window.Resourceslocal:PlaneConVerter x:Key=pcv/StateOfPlane x:sop/Window.ResourcesListBox x:listBox160ListBox.ItemTempla

11、teDataTemplateStackPanel Orientation=Horizontal Background=BeigeImage Width=2530 Source=Binding Path=Category,Converter=StaticResource pcvTextBlock Text=Binding Path=Area60CheckBox IsThreeState=True IsChecked=Binding Path=State,Converter=StaticResource sop/DataTemplate/ListBox.ItemTemplate/ListBoxBu

12、tton Content=load Click=Button_Click /SaveInfoButton_Click_1cs using System.Collections.ObjectModel;using System.IO; / ConvertInBinding.xaml 的交互逻辑 public partial class ConvertInBinding : public ConvertInBinding() private void Button_Click(object sender, RoutedEventArgs e) ObservableCollection planeL

13、ist = new ObservableCollection() new PlaneCategory=歼7B,Area=济南军区,State=,歼8F兰州军区成都军区南京军区 ; this.listBox.ItemsSource = planeList; private void Button_Click_1(object sender, RoutedEventArgs e) StringBuilder sb = new StringBuilder(); foreach (Plane p in listBox.Items) sb.AppendLine(string.Format(Categor

14、y=0,Area=1,State=2,p.Category,p.Area,p.State); File.WriteAllText(E:WPFCodeChapter_04PlaneList.txt, sb.ToString();最后实现的结果为图2:图2其中load按钮时实现装载数据,SaveInfo按钮是保存飞机安排的情况。下面解释一下上面的例子的重点代码,IValueConverter接口有两个方法,如果是实现源到目标的单向绑定的转化话,直接实现Convert(object value, Type targetType, object parameter, CultureInfo cultu

15、re)方法;如果是要实现双向绑定的转化,两个方法都要重写,所以还要实现它ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)方法。Converter是绑定的一个属性,所以在里面直接为Converter赋值显得很自然了。二、多路Binding(MultiBinding)多路Binding主要用于:一个UI需要显示的信息不止一个数据来决定,MultiBinding有一个属性为Bindings,就是用来添加Binding的。同时,多路Binding也有Converter属性。但实现的是IMu

16、ltiValueConverter接口,方法不一样的地方就是Convert(object values, Type targetType, object parameter, System.Globalization.CultureInfo culture)里面的第一个参数是复数形式,分别是Binding的源的属性值。还是通过例子来说明多路绑定的应用吧。需求是一个按钮是否可用取决于两个文本框的值是否一样。MultiBindingOfbind.MainWindow139383Vertical102TextBox Height=23 HorizontalAlignment=Left Name=textBox1 VerticalAlignment=Top350textBox2Submit IsEnabled=Falsebutton175us

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2