2018-8-10-win10-uwp-x_Bind-无法获得资源
title | author | date | CreateTime | categories |
---|---|---|---|---|
win10 uwp x:Bind 无法获得资源
|
lindexi
|
2018-08-10 19:17:19 +0800
|
2018-2-13 17:23:3 +0800
|
Win10 UWP
|
本文告诉大家,如果在 使用 x:Bind 转换器写在资源,而运行出现找不到资源的错误,如果解决。
在运行的时候,出现System.Runtime.InteropServices.COMException Cannot find a resource with the given key
这个问题就是资源寻找路径问题,因为 Binding 是性能比较差,他的资源是从他的自己,如果找不到,就到他的上一级,直到找到或没有。但是 x:bind
的资源寻找和 Bind 不同,他是在元素的最顶级元素和应用资源寻找。假如有一个用户控件 Foo ,那么打开他的代码,可以看到这样的代码
public global::Windows.UI.Xaml.Data.IValueConverter LookupConverter(string key)
{
if (this.localResources == null)
{
global::Windows.UI.Xaml.FrameworkElement rootElement;
this.converterLookupRoot.TryGetTarget(out rootElement);
this.localResources = rootElement.Resources;
this.converterLookupRoot = null;
}
return (global::Windows.UI.Xaml.Data.IValueConverter) (this.localResources.ContainsKey(key) ? this.localResources[key] : global::Windows.UI.Xaml.Application.Current.Resources[key]);
}
这就是说,元素资源从根元素找。页面的根元素就是页面本身,用户控件就是他自己本身,可以打开一个 xaml 页面,看到的第一个标签就是根元素。如果无法找到资源,会在应用资源寻找,如果找不到,就报错 System.Runtime.InteropServices.COMException 。应用资源是写在 App.xaml 的资源,所以如果希望使用x:bind
可以获得资源,或者把资源写在根元素,或者写在应用。
假如有元素 Slider
他需要资源转换器,那么转换器需要在哪定义,请看下面的代码
<Slider Margin="10,10,10,10" Value="{x:Bind xx,Mode=TwoWay,Converter={StaticResource Convert}}" >
<Slider.Resources>
<local:DoubleConvert x:Name="Convert"></local:DoubleConvert>
</Slider.Resources>
</Slider>
这样写运行会错误,说未指定,因为资源找不到,因为资源寻找不是从元素开始寻找,他是从最顶级元素开始,所以如果让上面的代码可以运行,需要把资源定义在顶级元素。上面的代码可以做修改,让他可以运行
<UserControl.Resources>
<local:DoubleConvert x:Name="Convert"></local:DoubleConvert>
</UserControl.Resources>
<Slider Margin="10,10,10,10" Value="{x:Bind xx,Mode=TwoWay,Converter={StaticResource Convert}}" > </Slider>
或者把资源写在 app.xaml 也是可以,但是写在这里的资源不会回收,会一直在内存。如果在这里写很多资源,启动速度会很慢。
2018-8-10-win10-uwp-x_Bind-无法获得资源的更多相关文章
- win10 uwp 使用 Microsoft.Graph 发送邮件
在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...
- Win10 UWP开发实现Bing翻译
微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...
- Win10/UWP开发—使用Cortana语音与App后台Service交互
上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...
- Win10 UWP应用发布流程
简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...
- win10 uwp 列表模板选择器
本文主要讲ListView等列表可以根据内容不同,使用不同模板的列表模板选择器,DataTemplateSelector. 如果在 UWP 需要定义某些列的显示和其他列不同,或者某些行的显示和其他行不 ...
- win10 uwp 获得元素绝对坐标
有时候需要获得一个元素,相对窗口的坐标,在修改他的位置可以使用. 那么 UWP 如何获得元素坐标? 我提供了一个方法,可以获得元素的坐标. 首先需要获得元素,如果没有获得元素,那么如何得到他的坐标? ...
- win10 uwp 毛玻璃
毛玻璃在UWP很简单,不会和WPF那样伤性能. 本文告诉大家,如何在 UWP 使用 win2d 做毛玻璃. 毛玻璃可以使用 win2D 方法,也可以使用 Compositor . 使用 win2d 得 ...
- win10 uwp 读取保存WriteableBitmap 、BitmapImage
我们在UWP,经常使用的图片,数据结构就是 BitmapImage 和 WriteableBitmap.关于 BitmapImage 和 WriteableBitmap 区别,我就不在这里说.主要说的 ...
- 【广告】win10 uwp 水印图床 含代码
本文主要是广告我的软件. 图床可以加速大家写博客上传图片的时间,通过简化我们的操作来得到加速. 在写博客的时候,我们发现,我们需要上传一张图片,需要先打开图片,然后选择本地图片,然后上传. 但是我经常 ...
- win10 uwp 商业游戏 1.2.1
上一个游戏已经告诉大家如何写多个游戏,现在继续写这个无聊的游戏 希望大家在看这篇文章之前先看win10 uwp 商业游戏,在这个文章告诉了大家如何创建游戏. 修改数值 可以从上一篇的博客的游戏看到升级 ...
随机推荐
- EMAS,一部淘宝十年移动互联网技术的演进史
导读 本文根据2018云栖大会深圳峰会·EMAS专场—移动互联的进化论,阿里巴巴高级技术专家泠茗< EMAS全景介绍>的演讲整理而成,文中就EMAS的起源史及EMAS的五大移动研发场景解决 ...
- DTcms设置 IIS6.0设置url重写导致editor上传全部失效
1.修改iis的重写规则为htm 2.修改后台后缀为htm 解决
- JDK源码解析string之二
(28) public boolean startsWith(String prefix, int toffset) { char ta[] = value; int to = toffset; ch ...
- oracle如何加固你的数据库
要注意以下方面 1. 修改sys, system的口令. 2. Lock,修改,删除默认用户: dbsnmp,ctxsys等. 3. 把REMOTE_OS_AUTHENT改成False,防止远程机器直 ...
- oracle如何利用hostname方式连接数据库
host name方式只支持tcp/ip协议的小局域网 修改listener.ora中的如下信息 (SID_DESC = (GLOBAL_DBNAME = ur_hostname) --你的机器名 ( ...
- PHP Laravel系列之环境搭建( VirtualBox+Vagrant+Homestead+系列网址)
搭建环境从来都是阻挡一门新技能的最致命的硬伤,为了这个环境,我又是花费了半天的时间,各种问题层出不穷,下面基于网上的一些教程(我看到的都多少有些问题) 开始的时候是在实验楼这个平台上开始学习的,不过 ...
- poj3261 后缀数组求重复k次可重叠的子串的最长长度
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 13669 Accepted: 6041 Ca ...
- 2019-6-23-WPF-获得当前输入法语言区域
title author date CreateTime categories WPF 获得当前输入法语言区域 lindexi 2019-06-23 11:51:21 +0800 2018-10-12 ...
- Java练习 SDUT-1255_小明A+B
小明A+B Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小明今年3岁了, 现在他已经能够认识100以内的非负整数, ...
- @loj - 2496@ 「AHOI / HNOI2018」毒瘤
目录 @description@ @solution@ @accepted code@ @details@ @description@ 从前有一名毒瘤. 毒瘤最近发现了量产毒瘤题的奥秘.考虑如下类型的 ...