当前位置: 首页 > news >正文

学校特色网站建设情况网站流量分析表

学校特色网站建设情况,网站流量分析表,广告制作图片效果图,网站开发语一.Binding的源与路径 在大多数情况下Binding的源是逻辑层的对象&#xff0c;但有时候为了让UI元素产生一些联动效果也会使用Binding在控件间建立关联&#xff0c; 下面的代码是把一个TextBox的Text属性关联在了Slider的Value上 <Window x:Class"MyBinding.WindowBindi…

一.Binding的源与路径

在大多数情况下Binding的源是逻辑层的对象,但有时候为了让UI元素产生一些联动效果也会使用Binding在控件间建立关联,

下面的代码是把一个TextBox的Text属性关联在了Slider的Value上

<Window x:Class="MyBinding.WindowBinding"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="WindowBinding" Height="150" Width="300"><Grid><StackPanel><TextBox x:Name="textBox1" Text="{Binding Path=Value,ElementName=Slider1}" BorderBrush="Black" Margin="5" Height="30" VerticalContentAlignment="Center"/><Slider x:Name="Slider1" Maximum="100" Minimum="0" Margin="5"/></StackPanel></Grid>
</Window>

与之等价的C#代码是:

 Binding binding = new Binding("Value") { Source = Slider1 };this.textBox1.SetBinding(TextBox.TextProperty, binding);

二.控制Binding的方向及数据更新

  Binding在源与目标之间架起了沟通的桥梁,默认情况下数据既能通过Binding送达目标,也能够从目标返回源(收集用户对数据的修改)。有时候数据只需要展示给用户

、不允许用户修改,这时候可以把Binding模式更改为从源向目标的单向沟通,Binding还支持从目标向源的单向沟通以及只在Binding关系确立时读取一次数据。

控制Binidng数据流向的属性是Mode,它的类型是BindingMode枚举。BindingMode可取值为TwoWay、OneWay、OnTime、OneWayToSource和Default。这里

的Default值是指Binding的模式会根据目标的实际情况来确定,比如若是可编辑的(TextBox.Text属性),Default就采用双向模式、若是只读的(TextBlock.Text)则采用单向模式

  当我们拖动Slider的手柄时,TextBox里就会显示出Slider当前的值;如果我们在TextBox里输入一个恰当的值,然后按一下Tab键,让焦点离开TextBox,则Slider的手柄会跳到

相应的值那里,为什么一定要在TextBox失去焦点之后Slider的值才会改变?这就引出了Binding的另一个属性——UpdateSourceTrigger,它的类型是UpdateSourceTrigger枚举,

可取值为PropertyChanged、LostFocus、Explicit和Default。对于TextBox默认值Default的行为与LostFocus一致,我们只要把这个属性改为PropertyChanged,则Slider的手柄

就会随着我们在TextBox里输入而改变位置

三.使用ObjectDataProvider对象作为Binding的Source

  由于一个类的所有数据都使用属性暴露出来,比如我们需要的数据可能是方法的返回值,这时候就需要使用ObjectDataProvider来包装作为Binding源的数据对象了

如下:

 public class Calculator{//加法public string Add(string arg1, string arg2){double x = 0;double y = 0;double z = 0;if(double.TryParse(arg1, out x)&& double.TryParse(arg2,out y)){z = x + y;return z.ToString();}return "Input Error!";}}
<Window x:Class="MyBinding.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="180" Width="300" WindowStartupLocation="CenterScreen"><Grid><StackPanel Background="LightBlue"><TextBox x:Name="textBoxArg1" Margin="5" Height="30"/><TextBox x:Name="textBoxArg2" Margin="5" Height="30"/><TextBox x:Name="textBoxResult" Margin="5" Height="30"/></StackPanel></Grid>
</Window>

这个程序实现的功能是上面两个TextBox输入数字后,第3个TextBox能实时地显示数字的和

 private void SetBinding(){//创建并配置ObjectDataProvider对象ObjectDataProvider odp = new ObjectDataProvider();odp.ObjectInstance = new Calculator();odp.MethodName = "Add";odp.MethodParameters.Add("0");odp.MethodParameters.Add("0");//以ObjectDataProvider对象为Source创建BindingBinding bindingToArg1 = new Binding("MethodParameters[0]"){Source = odp,BindsDirectlyToSource = true,UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged};Binding bindingToArg2 = new Binding("MethodParameters[1]"){Source = odp,BindsDirectlyToSource = true,UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged};Binding bindingToResult = new Binding(".") { Source = odp };//将Binding关联到UI元素上this.textBoxArg1.SetBinding(TextBox.TextProperty, bindingToArg1);this.textBoxArg2.SetBinding(TextBox.TextProperty, bindingToArg2);this.textBoxResult.SetBinding(TextBox.TextProperty, bindingToResult);}

四.使用Binding的RelativeSource

当一个Binding有明确的数据来源时我们可以通过为Source或ElementName赋值的办法让Binding与之关联,有时候我们不能确定作为Souce的对象叫什么,但知道它作为Binding目标的对象在UI布局上有

相对关系,比如控件自己关联自己的某个数据、关联自己某级容器的数据,这时候我们就要使用Binding的RelativeSource属性

<Window x:Class="MyBinding.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="180" Width="300" WindowStartupLocation="CenterScreen"><Grid x:Name="g1" Background="Red" Margin="10"><DockPanel x:Name="d1" Background="Orange" Margin="10"><Grid x:Name="g2" Background="Yellow" Margin="10"><DockPanel x:Name="d2" Background="LawnGreen" Margin="10"><TextBox x:Name="textBox1" FontSize="24" Margin="10" Text="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid},AncestorLevel=1},Path=Name}"/></DockPanel></Grid></DockPanel></Grid>
</Window>

AncestorLevel属性指的是Binding目标控件作为起点的层级偏移量——d2的偏移量是1、g2的偏移量是2,以此类推,AncestorType属性告诉Binding寻找哪个类型的对象作为自己的源,

不是这个类型的对象会被跳过,上面这段代码的意思是告诉Binding从自己的第一层依次向外找,找到第一个Grid类型对象后把它当做自己的源。

 

转载于:https://www.cnblogs.com/QingYiShouJiuRen/p/10497388.html

http://www.yayakq.cn/news/404056/

相关文章:

  • 个人或主题网站建设wordpress主题宽度修改
  • 好的设计作品网站高新企业建设网站公司
  • 淘宝网站建设图片素材做网站的时候宽高
  • 如何做网站的需求分析如何做网站反链
  • 顺德建设幼儿院报名网站网站排名怎么做上去
  • 网站栏目页怎么做培训学校加盟
  • 国外网站建设平台成都优化外包
  • asp网站开发技术背景介绍wordpress链接公众号
  • 上海企业网站制作多少钱濮阳市平台公司
  • 前程无忧网站开发待遇怎么样wordpress的atl属性怎么设置
  • 网站的类型有哪些人工智能建筑设计软件
  • 网站怎么备案免费制作小程序游戏
  • c mvc制作网站开发陕西网站建设优化技术
  • 网站定制建设哪里好清爽网站
  • 网页制作与网站建设期末考试学淘宝运营去哪里学
  • 二七区建设局网站做外贸建网站
  • 义乌网站设计制作价格建设大型门户网站
  • 上海市建设项目施工审图网站创做阿里巴巴网站流程
  • 雪域什么网站是做电影的网站开发一个支付功能要好多钱
  • 惠州网站小程序建设点网站运营专员是干嘛的
  • 网站开发工程师的职责网络服务协议模板
  • 安徽省建设厅执业资格注册中心网站建设一个网站要多少费用吗
  • 开发网站公司交税wordpress回收站位置
  • 网站设计评价标准网络营销服务的种类
  • 漯河网站建设电话二级网站建设与管理会议
  • 建设网站需要什么设施免费网站建设公司联系方式
  • 国外的ps网站用户界面设计案例
  • 记事本做的网站链接怎么装饰学网站建设需要下载什么
  • 企业建网站多少钱建设手机银行网站
  • 手机企业网站设计理念湖南长沙网站制作