silverlight数据绑定

<Grid x:Name="LayoutRoot">
<StackPanel>
<ScrollBar x:Name="bar" Orientation="Horizontal" Height="20" />
<TextBox x:Name="tb" Text="{Binding ElementName=bar, Path=Value, Mode=OneWay,
UpdateSourceTrigger=Default}" />
</StackPanel>
</Grid>

这段XAML代码定义了一个ScrollBar和一个TextBox,TextBox的Text会随着ScrollBar的拖动改变,范围从0到1.
Mode
为BindingMode枚举,有三个值,分别为OneTime,OneWay,TwoWay,分别是单次绑定,单向绑定和双向绑定。将上面代码的Mode改为TwoWay后,对TextBox值的更改同样也会影响ScrollBar的位置。
UpdateSourceTrigger
更改TextBox的值后,ScrollBar只有在TextBox失去焦点后才会做出改变。要改变这个行为,就需要更改UpdateSourceTrigger属性。同样有三个值:Default,PropertyChanged,Explicit。PropertyChanged会使ScrollBar实时反映TextBox的更改。而将属性改为Explicit后,就只能手动做出更新,方法如下:
tb.GetBindingExpression(TextBox.TextProperty).UpdateSource();
Path
绑定的Path可以不只是一个属性,比如
<TextBox x:Name="tb1" Text="{Binding ElementName=LayoutRoot, Path=Children[0].Children[0].Value}" />
但这是个傻例子 -_- 另外此时VS不会提供代码提示,出错的机会较大。
TypeConverter
实现一个Converter,将double转换为string并保留两位小数

public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ((double)value).ToString(".00");
} public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return double.Parse(value.ToString());
}
}


<navigation:Page x:Class="SilverlightApp.DataBinding"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:local="clr-namespace:SilverlightApp"
d:DesignWidth="640" d:DesignHeight="480"
Title="DataBinding Page">
<navigation:Page.Resources>
<local:MyConverter x:Key="conv"/>
</navigation:Page.Resources>
<Grid x:Name="LayoutRoot">
<StackPanel>
<ScrollBar x:Name="bar" Orientation="Horizontal" Height="20" />
<TextBox x:Name="tb" Text="{Binding ElementName=bar, Path=Value, Mode=OneWay, Converter={StaticResource conv}, UpdateSourceTrigger=Default}" />
</StackPanel>
</Grid>
</navigation:Page>

Source/DataContext
如果数据源不是控件,应该使用Source属性。或者使用DataContext,此属性会在element tree中继承。一个Grid如果拥有DataContext,那么Grid中的所有element都可以绑定到此DataContext上。如下:
public class Contry
{
public string Name { get { return "China"; } }
}
XAML

<navigation:Page x:Class="SilverlightApp.DataBinding"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:local="clr-namespace:SilverlightApp"
d:DesignWidth="640" d:DesignHeight="480"
Title="DataBinding Page">
<navigation:Page.Resources>
<local:Contries x:Key="contry"/>
</navigation:Page.Resources>
<Grid x:Name="LayoutRoot">
<StackPanel>
<TextBox DataContext="{StaticResource contry}" Text="{Binding Name, Mode=OneWay}" />
<TextBox Text="{Binding Name, Source={StaticResource contry}}" />
</StackPanel>
</Grid>
</navigation:Page>

两个TextBox都可以正确的显示出“China”.
绑定目标必须是dependency property, 所以textbox.text可以,run.text不行,C#代码中,setbinding中第一个参数就是是dp
silverlight数据绑定的更多相关文章
- Silverlight数据绑定之DataGrid
Silverlight数据绑定之DataGrid 时间:2011-08-03 01:59来源:网易博客 作者:Wilson. 点击:次 注:所有代码以C#为例 DataGrid绑定的数据对象: 1.D ...
- silverlight数据绑定模式TwoWay,OneWay,OneTime的研究
asp.net开发中,数据绑定是一个很简单的概念,控件与数据绑定后,控件可以自动把数据按一定的形式显示出来.(当然控件上的值改变后,可以通过提交页面表单,同时后台服务端代码接收新值更新数据) silv ...
- Silverlight数据绑定之 绑定一个int类型的属性
还就真心不会啊! 在类FunctionPanel中作如下定义: /// <summary> /// 鼠标状态 属性 /// </summary> public Dependen ...
- SilverLight: 数据绑定(1)-绑定到数据对象
ylbtech-SilverLight-DataBinding: Binding to Data Objects(绑定到数据对象) 1.A, Building a Data Object(创建一个数 ...
- silverlight简单数据绑定3
3种数据绑定模式 OneTime(一次绑定) OneWay(单项绑定) TwoWay(双向绑定) OneTime:仅在数据绑定创建时使用数据源更新目标. 列子: 第一步,创建数据源对象让Person ...
- Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题
1.xml/json数据解析 (1)xml数据解析 使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应 ...
- Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件
最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下 1.UI控件与布局 常用的主要 ...
- 一步一步学Silverlight 2系列(11):数据绑定
概念 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象
原文:Silverlight自定义数据绑定控件应该如何处理IEditableObject和IEditableCollectionView对象 原创文章,如需转载,请注明出处. 最近在一直研究Silve ...
随机推荐
- Windows Server 2008 R2之六活动目录域服务的卸载
活动目录域服务的卸载是将DC降级为独立服务器或成员服务器的过程. 在删除活动目录之前,为了防止操作失败操作系统故障,须对系统进行备份.同时,我们还必须对待删除的域控制器进行如下检查 1.是否有操作主控 ...
- Yii---使用事物
YII使用事物的时候,遇到的一些小问题总结:开始事物,后要进行事物提交,才能操作数据库(折腾了一天)具体使用: yii事物的定义:是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不 ...
- Linux at 定时任务
命令格式:at[参数][时间] 请注意系统时间是UTC 命令功能:在一个指定的时间执行一个指定任务,只能执行一次.假如该时间已过去,那么就放在第二天执行. /var/spool/mail/这里是任务 ...
- python的十进制与任意进制的转换
将任意进制转换成十进制 ", 8)) # 表示把8进制的54转换成十进制数并输出结果. # 8可以是2.8,10,16等进制数 将十进制转换成任意进制 def f(n,x): #n为待转换的 ...
- hihocoder 1334 - Word Construction - [hiho一下第170周][状态压缩+DFS]
题目链接:https://hihocoder.com/problemset/problem/1334 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given N wo ...
- Hive之import和export使用详解
在hive-0.8.0后引入了import/export命令. Export命令可以导出一张表或分区的数据和元数据信息到一个输出位置,并且导出数据可以被移动到另一个hadoop集群或hive实例,并且 ...
- Hadoop Single Node Setup(hadoop本地模式和伪分布式模式安装-官方文档翻译 2.7.3)
Purpose(目标) This document describes how to set up and configure a single-node Hadoop installation so ...
- m4a 转 wav
https://blog.csdn.net/zjm750617105/article/details/80148473 sox 不行, ffmpeg 很麻烦, 考虑用 avconv 很简单: 安装: ...
- jquery css样式
1.单一样式 $('.list li').css( "float", "none"); 2. 多个样式 $('.list li').css( { ...
- 8 jmeter之集合点
集合点:集合点用以同步虚拟用户,以便恰好在同一时刻执行任务.在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户 ...