附加属性,即为添加一个没有的属性的。

使用方法和依赖属性相似,个人理解就是特殊形式的依赖属性。

经常的用处,以一个简单的来说,比如一个控件的某一个属性我们想在XAML中给其绑定数据。但是我们在XAML中确实无论如何都找不到这个属性。而在后台代码确实可以使用的。那么我们就要来给它加上一个附加属性了。

OK,我们说一下附加属性的编写的方法。 刚才说附加属性是依赖属性的一种形式。但是编写方式却不同于依赖属性需要两个SET,GET访问器进行封装。只需要写两个静态公共方法来对附加属性进行读写。

下面是两个方法的编写方式

读取: public static <返回类型>Getxx[xx是附加属性的名称](目标类型)

赋值:public static void Setxx[xx是附加属性的名称](目标类型,属性值)

示例代码

//读取的是需要返回值的,括号内基本就是附加对象public static string GetHtmlString(DependencyObject D)//赋值不需要返回值,括号内参数需要两个一个附加对象,一个添加的值      public static void SetHtmlString(DependencyObject D, string HtmlString)

说完如何添加读取值,之外就是如何注册附加属性了。

注册附加属性是需要三个修饰符, public static readonly,必须是这三个。 然后是附加对属性。之后使用附加属性的RegisterAttached方法进行注册。

附加属性的RegisterAttached内需要四个参数。

分别是:name, propertyType, ownerType, defaultMetadata

下表为解释

名字 解释
name 要注册的依赖项对象的名称。
propertyType 该属性的类型,作为类型参考
ownerType 正在注册依赖项属性的所有者类型,作为类型参考
defaultMetadata 属性元数据实例。这可以包含一个 PropertyChangedCallback 实现引用。

下面给出注册的代码

  //注册一个名为setHtmlString的附加属性,利用其.RegisterAttached方法,括号内参数分别是,要添加的属性,属性的类型,属性的所有者,以及元数据实例,且其中包含返回public static readonly DependencyProperty setHtmlString =DependencyProperty.RegisterAttached("HtmlString", typeof(string), typeof(MainPage), new PropertyMetadata(null, CallBack));
//自动注册名为CallBack 的方法,private static void CallBack(DependencyObject d, DependencyPropertyChangedEventArgs e){        throw new NotImplementedException();           }

我们刚才说XAML进行绑定的时候会用到附加属性,使用的方式是 local:,这样VS就会自动出现了。

代码

到目前为止,一个简单的附加属性就可以了。但是可能是看不明白吧,所以我们要拿例子讲话。

实例:

WebView中有一个NavigateToString方法,可以加载本地的HTML字符串。我们想在前台进行绑定。但是并没有发现这个方法。所以我们要给其附加属性。

一般我们使用附加属性的时候需要新建一个类,也可以指在资源管理器中新建一个类进行编写附加属性,也可以在MainPage页面直接进行编写,但是要写在一个NameSpace。不要直接写在 MainPage()的方法内,不然啊会找不到的。不要为问什么。不信你可以试试,也可以在MainPage页面的MainPage()方法外写一个类进行编写附加属性,方法多多,随意。但那要表现出自己高大上的感觉可以新建一个类的页面进行编写附加属性,不仅是高大上也是为了方便阅读以及后续的更改。

下面就直接放出代码,例子是写在新建的类的页面,请注意

   class GetWebHtml{//注册一个附加属性,括号内的参数,分别是 要添加的附加属性的名字,附加属性的类型,附加属性的所有者,附加属性的元数据,并且创建一个返回public static readonly DependencyProperty setHtmlString =DependencyProperty.RegisterAttached("HtmlString",typeof(string),typeof(GetWebHtml),new PropertyMetadata(null, CallBack));//这里对你要控件的操作private static void CallBack(DependencyObject d, DependencyPropertyChangedEventArgs e){       //将附加对象进行强制转换WebView setData = d as WebView;//添加值
                setData.NavigateToString(e.NewValue.ToString());                    }//读取静态方法public static string GetHtmlString(DependencyObject D){return (string)D.GetValue(setHtmlString);}// 赋值静态方法public static void SetHtmlString(DependencyObject D, string HtmlString){D.SetValue(setHtmlString, HtmlString);}}

XAML页面

 <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">        <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">

<WebView  local:GetWebHtml.HtmlString="{Binding T}" x:Name="_webview" />

        </ScrollViewer></Grid>

MainPage页面

  public sealed partial class MainPage : Page{public class Data{public string T { get; set; }}public MainPage(){this.InitializeComponent();           Data _data = new Data();            string data ="<img src=\"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1487774858602&di=bc76e28a0328dd7a4412c28ac96c844d&imgtype=0&src=http%3A%2F%2Fi-7.vcimg.com%2Fcrop%2F32eb472901ee07279ce5cbf8810ea493467409%2528600x%2529%2Fthumb.jpg\"/>";_data.T = data;this.DataContext = _data;}}

效果图

转载于:https://www.cnblogs.com/T-ARF/p/6430787.html

UWPWP8.1 附加属性 和WebView的NavigateToString方法XAML绑定方法相关推荐

  1. Day7 子类调用父类的方法supper 绑定方法与非绑定方法

    supper:可以利用supper来重用父类的方法,可以不用指名道姓的调用了. 1 class OldboyPeople: 2 school = 'oldboy' 3 def __init__(sel ...

  2. python123怎么绑定慕课_python学习30——绑定方法与非绑定方法

    一 绑定方法与非绑定方法 ​ 类中定义的函数分为两大类:绑定方法和非绑定方法 ​ 其中绑定方法又分为绑定到对象的对象方法和绑定到类的类方法. ​ 在类中正常定义的函数默认是绑定到对象的,而为某个函数加 ...

  3. 每天记录学习的新知识 :WebView介绍以及基本使用和方法

    WebView介绍以及基本使用和方法 一.简介 二.调用: 三.方法介绍 3.1 WebView状态控制 3.2 WebView销毁和清理 3.3 WebView网页切换 3.4 WebView的回调 ...

  4. android 拦截h5方法,android - webview 拦截资源的几个方法和特点

    android - webview 拦截资源的几个方法和特点 2017-08-12 18:27 访问量: 2060 分类: 技术 看下面的代码,就可以看出端倪来了 onPageStarted, 触发的 ...

  5. python contains魔法方法_python魔法方法

    Python 魔术方法指南 入门 构造和初始化 构造定制类用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对 ...

  6. Go 学习笔记(34)— Go 方法声明、方法调用、方法值、方法表达式、切片对象方法、指针对象方法

    1. 方法声明 Go 语言的方法非常纯粹, 可以看作特殊类型的函数, 其显式地将对象实例或指针作为函数的第一个参数, 并且参数名可以自己指定, 而不强制要求一定是 this 或 self .这个对象实 ...

  7. ajax post的回调函数另一个方法,jQueryajax–post()方法 - 米扑博客

    jQuery ajax - post() 实例 请求 test.php 网页,忽略返回值: $.post("test.php"); 通过 AJAX POST 请求改变 div 元素 ...

  8. C++学习笔记24,方法重写与方法隐藏

    该博文仅用于交流学习.请慎用于不论什么商业用途.本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中又一 ...

  9. Java 8新特性——default方法(defenece方法)介绍

    为什么80%的码农都做不了架构师?>>>    本文由 ImportNew - 黄小非 翻译自 blog.sanaulla.info.如需转载本文,请先参见文章末尾处的转载要求. 我 ...

最新文章

  1. 老板用人5大原则,能力绝不是首选!大多数人的想法是错误的
  2. 《高性能JavaScript》第五章 字符串和正则表达式
  3. winform 代码定义事件
  4. py 的 第 30 天
  5. A*寻路算法的C#实现
  6. 三大无线技术 —— WiFi、蓝牙、HomeRF(无线网卡、WPAN)
  7. Python_notes_05
  8. 2019写给对象的话_数组方法写给女友的一系列 JS 数组操作(建议收藏 | 内附思维导图)...
  9. 微信小程序豆瓣电影项目的改造过程经验分享
  10. iOS上架app store下载步骤
  11. 容易的计算机科技核心期刊,计算机类容易中的期刊
  12. 【解决】如何将腾讯QLV格式的视频转换成MP4
  13. 计算机配置里面没有网络选项,解决win10网络设置中没有以太网的方法
  14. 高等数学学习笔记——第五十四讲——向量的数量积、向量积和混合积
  15. java抽奖活动_java抽奖思路
  16. java 系统api_java实现-强智教务系统API文档-时间信息
  17. MySQL数据库基础详解(非原创)
  18. 什么是肿瘤免疫逃逸?
  19. 谁的用户在世界上是#160;#160;明基决心保时捷设计标准
  20. 怎么把ppt文字大小设置一致_学会这个方法,轻松制作海报级别的霓虹灯PPT!

热门文章

  1. Turtlebot 3 rplidar bringup
  2. 【年度精选|含源码】2018程序员必备碎片化学习资料,1T竟然还不要钱
  3. 安全帽识别的行业应用
  4. 经典黑科技重出江湖 从EOS R3谈佳能全画幅专微发展之路
  5. 骑士游历数组任意起点c语言,java课程设计骑士游历程序的开发
  6. Rematch: 重新设计 Redux
  7. linux防火墙状态确认,linux防火墙状态查看的方法
  8. 在一个操蛋(执行力极差)的团队工作是一种怎样的体验?
  9. bowtie2序列比对
  10. FPGA-ZCU106-PL侧读写ddr4(全网唯一)