UWP&WP8.1 附加属性 和WebView的NavigateToString方法XAML绑定方法
附加属性,即为添加一个没有的属性的。
使用方法和依赖属性相似,个人理解就是特殊形式的依赖属性。
经常的用处,以一个简单的来说,比如一个控件的某一个属性我们想在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;
}
}
效果图
UWP&WP8.1 附加属性 和WebView的NavigateToString方法XAML绑定方法的更多相关文章
- UWP&WP8.1 中文网页字符乱码 字符乱码 UTF-8转GBK 解决方法
UWP 方法 async void Download() { /*新建HttpClient*/ HttpClient web_ = new HttpClient(); /*使用HttpClient的G ...
- WP8没有开发者账号升级GDR3预览版的方法
很多希望尝鲜WP8 GDR3的朋友一样希望提前体验GDR3的效果,但苦于没有开发者账号而不得其门!今天为大家带来普通账号升级GDR3的方法! 工具/原料 WP8智能手机 可用wifi热点 方法/步骤 ...
- C# Windows Phone 8 WP8 开发,取得手机萤幕大小两种方法。
原文:C# Windows Phone 8 WP8 开发,取得手机萤幕大小两种方法. 一般我们在开发Windows Phone App时,需要取得萤幕的大小来自定义最佳化控制项的大小,但是开如何取得萤 ...
- react-native WebView 返回处理 (非回调方法可解决)
1.前言 项目中有些页面内容是变更比较频繁的,这些页面我们会考虑用网页来解决. 在RN项目中提供一个公用的Web页,如果是网页内容,就跳转到这个界面展示. 此时会有一个问题是,网页会有一级页面,二级页 ...
- UWP&WP8.1 基础控件——Image
Image是UWP和WP8.1中系统自带的图片展示器. 具有较强的性能,使用也是非常的简单. 使用方式分为在XAML中,在C#代码中. XAML中: 在XAML中使用方式非常简单. 常用XAML So ...
- UWP&WP8.1 重新绘制图片 WriteableBitmap用法 图片转byte[]数组,byte[]数组转图片
---恢复内容开始--- WriteableBitmap 是UWP和WP8.1绘制图片的,重组图片的最重要方法.方法较为简单,方法多样性. 通过查看文档,WriteableBitmap的继承性是 ...
- UWP&WP8.1 基础控件——Grid
Grid是一个面板控件 Grid是UWP和WPF,WP8.1中最重要的一个控件,相当相当重要. 他是一个面板控件,是用来添加其他控件 但是呢 用法确实简单的很. 大概就这个样子. 你用工具箱拖, ...
- UWP&WP8.1 基础控件——Border
border 是边框控件 border是UWP和WP8.1最常用的控件之一. border字面意义是用来添加边框的. 基础用法 <border BorderThickness="1&q ...
- UWP&WP8.1图片照片添加水印
水印可以自己自己制作,也可以用代码写. 我这里主要写如何添加到照片上面. UWP和WP8.1添加的方法一样.代码是通用的. UWP和WP8.1没有像WPF和WINFROM中darw这样简便的API可以 ...
随机推荐
- Visualforce入门第五篇_2017.3.1
Visualforce添加过滤器,实现数据的筛选 参考原文:https://trailhead.salesforce.com/modules/visualforce_fundamentals/unit ...
- Attribute注解(用于判断权限)
一 Attribute原理: Attribute注解,是附加上方法.属性.类等上面的标签,可以通过方法的GetCustomAttribute获得粘贴的这个Attribute对象通过反射调用到粘贴到属 ...
- Mybatis多参数查询映射
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- jenkins学习 02 jenkins安装与配置
1: Jenkins安装 在最简单的情况下,Jenkins 只需要两个步骤: (1)下载最新的版本(一个 WAR 文件).Jenkins官方网址: http://Jenkins-ci.org/ (2 ...
- JeeSite入门介绍(一)
JeeSite特点:高效.高性能.强安全性属于开源.JavaEE快速开发平台:接私活的最佳助手: JeeSite是在Spring Framework基础上搭建的一个Java基础开发平台,以Spring ...
- 第三章 Java程序优化(待续)
字符串优化处理 String对象及其特点 String对象是java语言中重要的数据类型,但它并不是Java的基本数据类型.在C语言中,对字符串的处理最通常的做法是使用char数组,但这种方式的弊端是 ...
- Solr5.5.3的研究之路 ---1、从Mysql导入数据并创建索引
公司需要用到全文检索,故使用Solr,也是新人一枚,本人查看的前提是Solr已经安装部署成功,我用的服务器是自带的Jetty 1.创建Collection [root@whoami bin]# ./s ...
- python爬虫(1)--Urllib库的基本使用
这里使用python2.7,pycharm进行代码编写 1.爬一个静态网页示例 import urllib2 response = urllib2.urlopen("http://www.b ...
- 配gzip的过滤器进行压缩解决表单加载慢问题
一个客户的表单上字段超过五百,经浏览器的调试器发现主要问题是从服务器取数据花费了大量时间,下载内容大小约1.2M,下载时间在10s左右,导致样式加载完大约在17s左右(不清除浏览器缓存).最终考虑利用 ...
- JAVA input/output 流层次关系图
在java中,input和output流种类繁多,那么它们之间是否有关系呢?答案是肯定的,其中使用到了设计模式,装饰模式 下图来自于HEAD FIRST 设计模式 装饰模式一章 下图来自网络博客:ht ...