在Resource中使用x:Bind
Build2015上,MS热情高涨的演示了x:Bind,一种新的Binding方式,新的方式有如下优点:
1更好的性能(内存占用,CPU占用)
2BuildTime的Binding
具体在Channel9有视频
Data Binding: Boost Your Apps' Performance Through New Enhancements to XAML Data Binding
新的绑定方式,有如下特点:
x:Bind 主要的几点:
1. 强类型
2.上下文为page 或 UserControl
3.绑定的默认Mode为OneTime
更多了解,请访问:
其它的都比较简单,本文主要讲解在Resource中使用x:Bind
1.定义一资源文件DataTemplaterResources.xaml
- <ResourceDictionary
- x:Class="SLWeek.CustomTheme.DataTemplaterResources"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
- xmlns:core="using:Microsoft.Xaml.Interactions.Core"
- xmlns:behaviors="using:MVVMSidekick.Behaviors"
- xmlns:controls="using:Q42.WinRT.Controls"
- xmlns:models="using:SLWeek.Models">
- </ResourceDictionary>
注意:要使用x:Class,命名此xmal的部分类,与下面.cs文件从命名空间和类名称上保持一致
2.定义同名的部分类DataTemplaterResources.xaml.cs
- namespace SLWeek.CustomTheme
- {
- public partial class DataTemplaterResources
- {
- public DataTemplaterResources()
- {
- InitializeComponent();
- }
- }
- }
注意:一定要在构造函数中使用初始化InitializeComponent();
其结构如下图所示
3.引用资源文件,我们可以在页面引用,也可以直接在APP.xaml中引用,引用方式,不是我们通常的ResourceDictionary,而是如下方式:
- <Application.Resources>
- <ResourceDictionary>
- <ResourceDictionary.ThemeDictionaries>
- <ResourceDictionary x:Key="Light" Source="CustomTheme/ThemeResourcesLight.xaml" />
- <ResourceDictionary x:Key="Dark" Source="CustomTheme/ThemeResourcesDark.xaml" />
- </ResourceDictionary.ThemeDictionaries>
- <ResourceDictionary.MergedDictionaries>
- <ResourceDictionary Source="CustomTheme/CustomStyleResources.xaml" />
- <ResourceDictionary Source="CustomTheme/FlatUIColorsResources.xaml" />
- <theme:DataTemplaterResources/>
- </ResourceDictionary.MergedDictionaries>
- </ResourceDictionary>
- </Application.Resources>
其中theme是为我们为其所有命名空间起的别名
4.我们可以根据业务需要,在Resource中添加自己需要的Datatemplate了
- <DataTemplate x:Key="PostDetailItemDataTemplate" x:DataType="models:PostDetail">
- <Grid Margin="0,5,0,5" Background="{ThemeResource SystemControlChromeLowBackgroundBrush}">
- <Grid.RowDefinitions>
- <RowDefinition Height="*"/>
- <RowDefinition Height=""/>
- <RowDefinition Height=""/>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width=""/>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
- <interactivity:Interaction.Behaviors>
- <core:EventTriggerBehavior EventName="Tapped">
- <behaviors:SendToEventRouterAction EventRoutingName="NavToPostDetailByEventRouter" IsEventFiringToAllBaseClassesChannels="True" EventData="{Binding}"/>
- </core:EventTriggerBehavior>
- </interactivity:Interaction.Behaviors>
- <Image controls:ImageExtensions.CacheUri="{x:Bind Icon}" Stretch="Fill" Grid.Row="" Grid.Column="" Grid.ColumnSpan=""/>
- <!--<c:DelayLoadImage DefaultImageSource="../Assets/Icon/no.png" ActualImageSource="{Binding Icon}" Stretch="Fill" Grid.Row="" Grid.ColumnSpan=""/>-->
- <TextBlock Text="{x:Bind Creattime,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0:MMM dd}',Mode=OneWay}" FontSize="" Grid.Row="" Grid.Column="" Grid.RowSpan="" Margin="0,10,0,0"/>
- <TextBlock Text="{x:Bind Title}" FontSize="" Grid.Row="" Grid.Column="" Margin="0,2,0,2"/>
- <TextBlock Text="{x:Bind Des}" TextTrimming="CharacterEllipsis" Style="{StaticResource MenuTitleTextBlockStyle}" Grid.Row="" Grid.Column="" Margin="0,10" VerticalAlignment="Stretch"/>
- </Grid>
- </DataTemplate>
注意,由于x:Bind是强类型,我们需要在Datatempalte声明中 使有 x:DataType="models:PostDetail" 来确定要绑定的数据类型,
5.在页面中引用这个资源即可
- <ListView ItemsSource="{x:Bind StrongTypeViewModel.SoureList}" Style="{StaticResource ListViewWrapItemsPanel}" ItemTemplate="{StaticResource PostDetailItemDataTemplate}" SizeChanged="ListView_SizeChanged"/>
最后效果图如下:
在Resource中使用x:Bind的更多相关文章
- 关于angular的$resource中的isArray属性问题
在之前的文章中讲到了在使用$resource的时候,有一个isArray属性. 这个属性在两个地方有提到: 1. angular学习笔记(二十八)-$http(6)-使用ngResource模块构建R ...
- angular学习笔记(二十八-附1)-$resource中的资源的方法
通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,$save,$delete,$remove,可以直接调用来保存该资源: 比如有一个$resour ...
- 深入理解jQuery中live与bind方法的区别
本篇文章主要是对jQuery中live与bind方法的区别进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 注意如果是通过jq添加的层和对象一定要用live(),用其他的都不起作用 ...
- javascript中call,apply,bind的用法对比分析
这篇文章主要给大家对比分析了javascript中call,apply,bind三个函数的用法,非常的详细,这里推荐给小伙伴们. 关于call,apply,bind这三个函数的用法,是学习java ...
- 白话$resource,$resource中的增删改查
前言 $resource详解,在学习angular的过程中,我们已经知道,$http能十分便捷的为我们实现与后端的数据交互,格式如下: $http({method:'GET'},url:'XX').t ...
- C++11中的std::bind
C++11中的std::bind 最近在看看cocos2dx的源代码,发现了cocos2dx 3.0相对于2.0改动了很多,最大的改变就是大量的使用了C++11的特性,比如auto等.其中有一个关于回 ...
- 创建dynamics CRM client-side (十三) - 在HTML Web Resource中获取form elements & 获取外部js文件
上一节我们讨论到创建HTML Web Resource. 但是纯HTML的页面不能满足我们的需求, 所以今天我们来做在HTML Web Resource中获取form elements Please ...
- angular学习笔记(二十八-附2)-$http,$resource中的promise对象
下面这种promise的用法,我从第一篇$http笔记到$resource笔记中,一直都有用到: HttpREST.factory('cardResource',function($resource) ...
- vs2012中将图片放到resource中进行调用
1.在项目中新建一个名叫resource的文件夹,然后将所需图片信息放入该文件夹,如图 2.右击该项目,选择属性->资源选项卡,步骤如图所示 点击添加现有文件,然后找到你刚刚添加的resourc ...
随机推荐
- [Spring] Properties for project configuration
We might have some project specific configuration need to setup. The good approach to do this in Spr ...
- ZOJ 3684 Destroy 树的中心
中心节点就是树的中心,2遍dfs求到树的直径.而中心一定在直径上,顺着直径找到中心就够了. 然后能够一遍树形DP找到最小值或者二分+推断是否訪问到叶子节点. #include <iostream ...
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
这次换了台电脑,所以须要又一次配置一次项目开发环境,过程中的种种,记录下来,便于以后再次安装.同一时候给大家一个參考. 1.JDK的安装 首先下载JDK,这个从sun公司官网能够下载.依据自己的系统选 ...
- python爬虫【第2篇】【多进程】
一.多进程 1.fork方法(os模块,适用于Lunix系统) fork方法:调用1次,返回2次.原因:操作系统经当前进程(父进程)复制出一份进程(子进程),两个进程几乎完全相同,fork方法分别在父 ...
- python 字符编码处理问题总结 彻底击碎乱码!
Python中常常遇到这种字符编码问题,尤其在处理网页源代码时(特别是爬虫中): UnicodeDecodeError: 'XXX' codec can't decode bytes in posit ...
- Python获取CPU、内存使用率以及网络使用状态代码
Python获取CPU.内存使用率以及网络使用状态代码_python_脚本之家 http://www.jb51.net/article/134714.htm
- 【Silverlight】Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps
[Silverlight]Bing Maps学习系列(八):使用Bing Maps Silverlight Control加载自己部署的Google Maps 上个月微软必应地图(Bing Maps) ...
- luogu 2627 修建草坪
题目大意: 一个数列,取出一些数使得它们的总和最大且没有k个连续 思路: 首先我们可以找到一个nk的dp dp方程:dp[i]=dp[i-1]+sum[i]-sum[j] (sum[j]尽量小) 然后 ...
- ci完整集成
http://www.cnblogs.com/zhanchenjin/p/5032218.html http://blog.csdn.net/williamwanglei/article/detail ...
- ASP.NET给前端动态添加修改 CSS样式JS 标题 关键字(转载)
原文地址:http://www.cnblogs.com/xbhp/p/6392225.html 有很多网站读者能换自己喜欢的样式,还有一些网站想多站点共享后端代码而只动前段样式,可以采用动态替换CSS ...