WPF数据绑定(二)

摘要:
TabItemHeader=“资源绑定”>TextBlockHorizontalAlignment=“Center”VerticalAlignment:“Center”Text=“{BindingSource={StaticResourcestring1}}”/>7<AncestorType={x:2。上下文绑定也不需要编写代码1&lt。

前面讲了最近本的两种数据绑定,这次讲讲资源绑定和Context绑定

1、资源绑定

WPF数据绑定(二)第1张

同样不需要写代码,仅仅需要配置XAML就可以了。

1             <TabItem Header="ResourceBinding">
2                 <StackPanel>
3                     <StackPanel.Resources>
4                         <sys:String x:Key="string1">this is a static string resource</sys:String>
5                     </StackPanel.Resources>
6                     <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Source={StaticResource string1}}" />
7                     <TextBlock Text="{Binding Path=Name, RelativeSource={RelativeSource AncestorLevel=2, Mode=FindAncestor, AncestorType={x:Type Grid}}}" />
8                 </StackPanel>
9             </TabItem>

其中第六行中Textblock的Text属性就是针对静态属性的绑定。绑定的时一个字符串资源,资源的定义在第四行。

第七行的TextBlock是什么绑定呢?这个叫相对资源绑定,前面的静态资源是绝对资源,比如我们在例子中用到的字符串就是stackpanel的一个资源,他的“位置”,从属关系是绝对的。

而相对资源是以当前空间为出发点的相对位置,比如说在例子中的绑定的资源就是相对于该TextBlock的外围的Grid的控件的的Name属性。

重点是下面这句话:

RelativeSource={RelativeSource AncestorLevel=2, Mode=FindAncestor, AncestorType={x:Type Grid}}

AncestorLevel这个是相对的控件的偏移量,从1开始,每层向外加1,Mode是找寻的模式,这里的FindAncestor时说找祖先(Ancestor意为祖先),就是说找父控件,即外层的空件。AncestorType就是要找哪类控件。

2、Context绑定

同样不需要写代码

 1             <TabItem Header="context binding">
 2                 <StackPanel>
 3                     <StackPanel.DataContext>
 4                         <local:Student Id="15" Name="Jean" Age="18"/>                        
 5                     </StackPanel.DataContext>
 6                     <TextBlock Text="{Binding Id}"/>
 7                     <TextBlock Text="{Binding Name}"/>
 8                     <TextBlock Text="{Binding Age}"/>
 9                 </StackPanel>
10             </TabItem>

我们原本定义了一个student类,现在给Stackpanel类设置一个DataContext,一个学生类。

同时让TextBlock类的控件来绑定的显示该学生类的信息。

显示效果如下:

WPF数据绑定(二)第2张

 当然我们也可以使用代码来实现,将StackPanel类设置为一个学生类。效果是一样的

代码下载:

https://github.com/Dothegod/WPF_Training_Sample

免责声明:文章转载自《WPF数据绑定(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇odoo权限机制WPF布局(2)控件拖动下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python并发编程协程(Coroutine)之Gevent

Gevent官网文档地址:http://www.gevent.org/contents.html 基本概念 我们通常所说的协程Coroutine其实是corporate routine的缩写,直接翻译为协同的例程,一般我们都简称为协程。 在linux系统中,线程就是轻量级的进程,而我们通常也把协程称为轻量级的线程即微线程。 进程和协程 下面对比一下进程和协...

fancyBox简单入门

1. 下载 fancyBox,解压后根据需要将文件复制到网页文件夹中(建议不要更改目录结构),并在网页源码中引入相应的 css 样式和 js 文件(如果更改了目录结构,引入的时候请调整相应代码,对应它们所在的路径)。注意:别忘了还要先加载 jQuery 库! <!-- 加载 jQuery 库(必须) --> <script type="t...

PHP集成微信支付(APP支付)

目录 配置参数 安装 PHP 扩展 微信支付简单使用 后续 配置参数 appid appid 是微信公众账号或开放平台 APP 的唯一标识,在公众平台申请公众账号或者在开放平台申请APP账号后,微信会自动分配对应的 appid,用于标识该应用。可在微信公众平台-->开发者中心查看,商户的微信支付审核通过邮件中也会包含该字段值(APPID)...

移动端触屏滑动事件

移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成。但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件。处理touch事件能跟踪到屏幕滑动的每根手指。 以下是四种touch事件 touchstart:     //手指放到屏幕上时触发 touchmove:      //手指在屏...

真正掌握vuex的使用方法(三)

接下来咱们继续使用vuex来完成上篇文章的投票实例。大家一定要记住,学习编程这种事一定要慢慢来才会快!所以一定要将代码多敲几遍哦! 目前当前的票数已经可以在页面中渲染出来了!接下来要做的事就是让按钮起到应有的责任:点击对应的按钮让数字加1, 总票数也要加1。很简单,只要给按钮增加一个事件,直接改变其状态即可,代码如下: <div id="app"...

embed 元素的用法

embed (一)、基本语法: embed src=url 说明:embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等,Netscape及新版的IE 都支持。url为音频或视频文件及其路径,可以是相对路径或绝对路径。 示例:<embed src="http://t.zoukankan.com/your.mid"&...