背水一战 Windows 10 (18) - 绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue...
[源码下载]
作者:webabcd
介绍
背水一战 Windows 10 之 绑定
- 与 Element 绑定
- 与 Indexer 绑定
- TargetNullValue - 当绑定数据为 null 时显示的值
- FallbackValue - 当绑定失败时显示的值
示例
1、演示如何与 Element 绑定
Bind/BindingElement.xaml
<Pagex:Class="Windows10.Bind.BindingElement"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:Windows10.Bind"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="10 0 10 10"><!--本例用于演示如何与 Element 绑定,以及 OneTime, OneWay, TwoWay 的区别--><!--OneTime 方式绑定元素--><TextBox Text="{Binding ElementName=txtOneTime, Path=Text, Mode=OneTime}" /><TextBox Name="txtOneTime" Text="OneTime" Margin="0 10 0 0" /><!--OneWay 方式绑定元素(OneWay 是默认方式)--><TextBox Text="{Binding ElementName=txtOneWay, Path=Text, Mode=OneWay}" Margin="0 30 0 0" /><TextBox Name="txtOneWay" Text="OneWay" Margin="0 10 0 0" /><!--TwoWay 方式绑定元素(同时演示一下 Binding 标记的另一种写法,就是直接把 Path 指定的路径放到 Binding 的后面)--><TextBox Text="{Binding Text, ElementName=txtTwoWay, Mode=TwoWay}" Margin="0 30 0 0" /><TextBox Name="txtTwoWay" Text="TwoWay" Margin="0 10 0 0" /><!--TwoWay 方式绑定元素(在 C# 端指定 Binding 对象的方式一)--><TextBox Name="textBox1" Margin="0 30 0 0" /><TextBox Name="textBox2" Text="TwoWay" Margin="0 10 0 0" /><!--TwoWay 方式绑定元素(在 C# 端指定 Binding 对象的方式二)--><TextBox Name="textBox3" Margin="0 30 0 0" /><TextBox Name="textBox4" Text="TwoWay" Margin="0 10 0 0" /></StackPanel></Grid> </Page>
Bind/BindingElement.xaml.cs
/** 演示如何与 Element 绑定*/using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data;namespace Windows10.Bind {public sealed partial class BindingElement : Page{public BindingElement(){this.InitializeComponent();SetBindingDemo1();SetBindingDemo2();}// 在 C# 端做绑定(方式一)private void SetBindingDemo1(){// 实例化 Binding 对象Binding binding = new Binding(){ElementName = nameof(textBox2),Path = new PropertyPath(nameof(TextBox.Text)),Mode = BindingMode.TwoWay // 默认是 OneWay 的 };// 将目标对象的目标属性与指定的 Binding 对象关联 BindingOperations.SetBinding(textBox1, TextBox.TextProperty, binding);}// 在 C# 端做绑定(方式二)private void SetBindingDemo2(){// 实例化 Binding 对象Binding binding = new Binding(){ElementName = nameof(textBox4),Path = new PropertyPath(nameof(TextBox.Text)),Mode = BindingMode.TwoWay // 默认是 OneWay 的 };// 将目标对象的目标属性与指定的 Binding 对象关联 textBox3.SetBinding(TextBox.TextProperty, binding);}} }
2、演示如何与 Indexer 绑定
Bind/BindingIndexer.xaml
<Pagex:Class="Windows10.Bind.BindingIndexer"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:Windows10.Bind"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="10 0 10 10"><!--演示如何绑定集合中的某个元素--><TextBlock Name="textBlock" Text="{Binding Path=[3]}" /><!--演示如何绑定集合中的某个对象的某个属性--><TextBlock Name="textBlock2" Text="{Binding Path=[5].Name}" Margin="0 10 0 0" /><!--演示如何绑定 string 类型的索引器--><TextBlock Name="textBlock3" Text="{Binding Path=[webabcd]}" Margin="0 10 0 0" /><!--演示如何绑定字典表中指定 key 的数据--><TextBlock Name="textBlock4" Text="{Binding Path=[hello]}" Margin="0 10 0 0" /><!--演示如何在 C# 端绑定索引器--><TextBox Name="textBox" Margin="0 10 0 0" /></StackPanel></Grid> </Page>
Bind/BindingIndexer.xaml.cs
/** 演示如何与 Indexer 绑定*/using System; using System.Collections.Generic; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Data; using Windows10.Common;namespace Windows10.Bind {public sealed partial class BindingIndexer : Page{public BindingIndexer(){this.InitializeComponent();this.Loaded += BindingIndexer_Loaded;BindingDemo();}private void BindingIndexer_Loaded(object sender, RoutedEventArgs e){// 用于演示如何绑定集合中的某个元素List<string> list = new List<string>();for (int i = 0; i < 10; i++){list.Add("索引:" + i.ToString());}textBlock.DataContext = list;// 用于演示如何绑定集合中的某个对象的某个属性textBlock2.DataContext = TestData.GetEmployees();// 用于演示如何绑定 string 类型的索引器textBlock3.DataContext = this;// 用于演示如何绑定字典表中指定 key 的数据Dictionary<string, string> dic = new Dictionary<string, string>() { { "hello", "hello webabcd" } };textBlock4.DataContext = dic;}// 自定义一个索引器public object this[string indexer]{get{return "string: " + indexer;}}// 在 C# 端绑定索引器private void BindingDemo(){textBox.DataContext = this;// 实例化 Binding 对象Binding binding = new Binding(){Path = new PropertyPath("[wanglei]")};// 将目标对象的目标属性与指定的 Binding 对象关联 BindingOperations.SetBinding(textBox, TextBox.TextProperty, binding);/** 注:经测试在 TextBox 做如上绑定是正常的。但是如果在 TextBlock 做如上绑定则运行时报错 Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 不知道为什么*/}} }
3、演示 Binding 中的 TargetNullValue 和 FallbackValue 的用法
Bind/TargetNullValueFallbackValue.xaml
<Pagex:Class="Windows10.Bind.TargetNullValueFallbackValue"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:Windows10.Bind"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="10 0 10 10"><!--FallbackValue - 当绑定失败时显示的值--><TextBlock Name="textBlock1" Text="{Binding Path=MyName, FallbackValue='绑定失败时的默认值'}" Margin="5" /><!--TargetNullValue - 当绑定数据为 null 时显示的值--><TextBlock Name="textBlock2" Text="{Binding Path=MyName, TargetNullValue='绑定数据的返回值为 null'}" Margin="5" /></StackPanel></Grid> </Page>
Bind/TargetNullValueFallbackValue.xaml.cs
/** 演示 Binding 中的 TargetNullValue 和 FallbackValue 的用法*/using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation;namespace Windows10.Bind {public sealed partial class TargetNullValueFallbackValue : Page{public TargetNullValueFallbackValue(){this.InitializeComponent();}protected override void OnNavigatedTo(NavigationEventArgs e){// 为 textBlock2 提供数据上下文textBlock2.DataContext = this;/*// 实例化 Binding 对象Binding binding = new Binding(){Path = new PropertyPath("Name"),TargetNullValue = "TargetNullValue",FallbackValue = "FallbackValue"};// 将目标对象的目标属性与指定的 Binding 对象关联BindingOperations.SetBinding(textBlock2, TextBox.TextProperty, binding);*/}public string MyName { get; set; } = null;} }
OK
[源码下载]
相关文章:

2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...
本文原创于 2014-02-12 09:26。 今复习之用,有新体会,故重新编辑。 2014-02-12 09:26: 2-sat之第二斩!昨天看了半天论文(赵爽的和俉昱的),终于看明白了!好激动有木有!终…

C#方法/函数
本节课向你介绍C#的方法,其目的是: 1.了解方法的结构格式2.了解静态和实例方法之间的区别3.学会实例对象的使用4.学会如何调用实例化的对象5.学会方法的四种参数类型的使用6.学会使用"this"引用以往,对于每个程序来说,所…

Python 的一万种用法:生成字符视频
作者 | ZackSock来源 | 新建文件夹X头图 | 下载于视觉中国前言在之前也写过生成字符视频的文章,但是使用的是命令行窗口输出,效果不是很好,而且存在卡顿的情况。于是我打算直接生成一个mp4的字符视频。大致思路和之前一样:Python2…

Codeforces 862B - Mahmoud and Ehab and the bipartiteness
862B - Mahmoud and Ehab and the bipartiteness 思路:先染色,然后找一种颜色dfs遍历每一个点求答案。 代码: #include<bits/stdc.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,si…

C#表达式,类型和变量
本节课将介绍C# 语言的表达式,类型和变量。本节课要达到如下几个目的: 1.了解什么是"变量"2.学习C#的简单类型3.对C#表达式有个初步的了解4.了解什么是String类型5.学习如何使用数组"变量"仅仅是数据的存储位置。你可以把数据存放到…

张一鸣卸任CEO,立下10年之约,期望突破线性延伸
整理 | 寇雪芹头图 | 下载于视觉中国出品 | AI 科技大本营(ID:rgznai100)5月20日,字节跳动创始人张一鸣发布内部全员信,宣布卸任CEO,联合创始人梁汝波将接任这一职位。张一鸣在全员信中表示,“我决定卸任CE…

【译】使用Kotlin和RxJava测试MVP架构的完整示例 - 第1部分
原文链接:android.jlelse.eu/complete-ex… 最近我创建了一个playground项目来了解更多关于Kotlin和RxJava的信息。 这是一个非常简单的项目,但有一部分,我进行了一些尝试:测试。 在kotlin的测试上可能会有一些陷阱,而…

智能改变未来,创新引领世界,第二届深圳国际人工智能展暨智能制造创新高峰论坛盛大启幕!
2021年5月20日,由深圳市科学技术协会、深圳市商务局、深圳市福田区人民政府共同指导,深圳市科技开发交流中心、深圳市人工智能行业协会联合主办的2021第二届深圳国际人工智能展开幕式暨智能制造创新高峰论坛在深圳会展中心(福田)启…

C#循环控制语句
本节课将介绍如何使用C#控制语句中的循环语句,本课目的如下: 1.学会"while"循环的用法。2.学会"do" 循环的用法。3.学会"for" 循环的用法。4.学会foreach循环的用法。5.进一步了解"break"语句的用法。6.如何使用…

2017-09-22 前端日报
2017-09-22 前端日报 精选 JavaScript 在 V8 中的元素种类及性能优化【译】异步递归:回调、Promise、Async[译]HTML&CSS Lesson5: 定位一个页面阻塞问题的排查过程前端分享之cookie的使用及单点登录An event for CSS position:stickyanvaka/ngraph.path: Path f…

C#选择控制语句
本节课将介绍如何使用C#选择控制语句,第三课将达到如下几个目的: 1.学会"if"语句的用法。2.学会"switch"语句的用法。3.学会在"switch"语句中如何使用"break"语句。4.理解"goto"语句的正确用法。在前…

将博客搬至51CTO
将博客搬至51CTO转载于:https://blog.51cto.com/imace/1540730

腾讯国风AI虚拟人学会作诗书法,背靠开源模型SongNet
5月21日,腾讯AI虚拟人艾灵再秀出新技能,首次展示AI作诗、AI书法等国风才艺,并与青年歌手白举纲跨次元合作,共同演唱国风新歌《百川千仞》。 AI“艾灵”诞生于腾讯AI Lab,来自实验性、探索性技术项目“多模态虚拟人”。…

Windows10安装Mysql5.7.19.0 msi 版本报错
安装环境:Windows10安装版本:MySql 5.7.19.0 msi1.安装5.7.19.0 msi版本Mysql时报如下错误:2.根据日志分析是缺少visual Studio 2013 Redistributable3.下载完成后,安装仍然显示失败:4.在网上下载各种vs测试࿰…

C#简单的欢迎程序
本节课通过介绍几个简单的程序,使得你对C#有所入门。本节程要达到如下几个目的: 1.理解一个C#程序的基本结构。2.初步了解"名称空间"的概念。3.初步了解"类"的概念。4.了解"Main"方法所做的工作。5.学会如何读取命令行输入…

知乎联合清华:开放国内最大个性化推荐实际交互数据集
5月21日,知乎联合清华大学对外开放基于知乎的大规模富文本查询和推荐数据集“ZhihuRec”。该数据集包含了知乎上的1亿个行为数据,是目前为止,国内用于个性化推荐的最大的实际交互数据集。 作为一个大型数据集,ZhihuRec具有社交化问…

SQL Server 2014 许可证(五)降级与升级
“版本”一词对应的英文单词有两个:(1) Version是指不同历史时期发生的产品,或者指产品不同的“代”,例如,SQL Server 2014 版本。(2) Edition是指在发行同一代产品(Vers…

OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划
注:本文为原著(其内容来自 腾科教育培训课堂)。阅读本文注意事项如下:1:所有文章的转载请标注本文出处。2:本文非本人不得用于商业用途。违者将承当相应法律责任。3:该系列文章目录列表…

赠书 | 联邦学习如何在视觉领域应用?
前言:联邦学习是如何应用在视觉领域的?本文将通过一个获得了2020年AAAI人工智能创新应用奖的案例来向大家介绍。本案例是联邦学习在视觉、物联网、安防领域的实际应用,对分散在各地的摄像头数据,通过联邦学习,构建一个…

AME_Oracle自带AME审批链详解AME Standard Handler(概念)
2014-05-30 Created By BaoXinJian Oracle 自带了3大类,13个子类的审批链Action Type, 对应了13个标准的AME Standard Handler 1. 按主管层次审批 absolute job level / chains of authority based on absolute job levelfinal approver only / chains of authorit…

c# 中如何定义和接收消息
在C#中目前我还没有找到发送消息的类成员函数,所以只能采用通过调用WIN 32 API 的 SendMessage() 函数实现。由于 SendMessage的参数中需要得到窗体的句柄(handler) ,所以又要调用另一个API FindWindow(), 两者配合使用,达到在不同窗体之间的…

java如何读写json文件
java如何读写json文件 在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml、json等)也是一种实现方式࿰…

C#数组篇讲解
数组是我们经常用到的,我来介绍一下:数组是具有相同类型的一组数据。当访问数组中的数据时,可以通过下标来指明。c#中数组元素可以为任何数据类型,数组下标从0开始,即第一个元素对应的下标为0,以后逐个递增…

Spring AOP详解(转载)所需要的包
上一篇文章中,《Spring Aop详解(转载)》里的代码都可以运行,只是包比较多,中间缺少了几个相应的包,根据报错,几经百度搜索,终于补全了所有包。 截图如下: 在主测试类里面…

Mendix 披露低代码方法论,解读真实技术趋势
作者 | 宋慧头图 | 下载于视觉中国出品 | AI 科技大本营(ID:rgznai100)在 2021年初正式宣布进入中国市场之后,Mendix 在近日向媒体重点披露了关于低代码的技术方法论,以及近四个月在中国市场的进展。Mendix 的低代码技术方法论对于…

PHP中foreach详细解读
oreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法: foreach (array_expression as $value) statement foreach (array_expression…

Android ViewPager使用具体解释
这是谷歌官方给我们提供的一个兼容低版本号安卓设备的软件包,里面包囊了仅仅有在安卓3.0以上能够使用的api。而viewpager就是当中之中的一个利用它,我们能够做非常多事情,从最简单的导航,到页面菜单等等。那怎样使用它呢ÿ…

实时音视频的超级风口,开发者的机会在哪里?
2021年初因为Elon Musk“带货”而走红的音频社交App Clubhouse,又以肉眼可见的速度跌落神坛,下载量从2月的960 万/月跌至4月的92万/月。不过在5月,Clubhouse终于推出了安卓版,并表示接下来也会对所有用户开放。 另一边,…
高可用集群之分布式文件系统
一、分布式文件系统和单机文件系统的区别:单机文件系统的分区只能被一台主机所挂载,不能同时被多台主机挂载使用,因为单机文件系统是通过系统内核层的锁机制来完成的,所以一个系统上可以有多个进程访问,但只能在一个时…

C#中基本知识
当数据转换到asp.net页面时,大部分都是以文本的形式存在的。有时候为了输出,单单使用显示或者隐式转换都是不行的,就需要本节说到的数据转换。 字符串输出: int intAge21; string strAgeintAge.ToString(); 转换DateTime值时&…