Windows Presentation Foundation (WPF) 在 Microsoft .NET Framework 中添加了一些功能,您可以可靠地使绑定控件与其数据源保持一致。...类还可以在您添加、删除、移动、刷新或替换集合中的项目时引发 CollectionChanged 事件。...通常我们采用WCF服务所使用的List, 在Silverlight客户端生成的代理都会使用ObservableCollection 替代,没有用过Silverlight的同学可以到这篇文章《推荐一个...当我们在列表(比如ListBox)显示了一个CLR对象列表(比如List)时,如果想在修改List对象后,ListBox也动态的反映这种变 化。...此时,我们应该使用动态的ObservableCollection对象绑定。而不是直接的更新ItemSource。
iFrame如果嵌入的是普通网页,这种场景下的iframe高度自适应解决方案,百度一下随手都能找到一大把。...但是嵌入Silvelight时,嵌入iframe的父页面默认不知道Silverlight内容的真实高度,所以上述办法就不起作用了。...其实只要换个思路:既然父页面不知道iframe中SL的高度,SL难道不能自己主动向父页面汇报自已的高度吗? 先看最终的效果: ? ? ?...注:Page1,Page3均是SL中的UserControl 代码见下面的源代码: 主要步骤为 1、SL在每个页面的Page_Loaded中,通过与父页面的js交互,主动报告当前SL页面的高度 2、父页面得到高度后...,用js动态调整iFrame/Frame的高度 示例源代码:http://files.cnblogs.com/yjmyzz/SL_Iframe_Height_Sample.7z
该font picker由Silverlight for Windows Phone Toolkit中的list picker控件创建而来。 ? ?...图25.4 配置为全模式的Book Reader中font picker 当我尝试在Windows Phone 应用程序中使用ComboBox控件时,为什么显得很奇怪? ...ComboBox是一个核心的Silverlight控件,它频繁地使用在网页中,但是,它没有为Windows Phone提供合适的设计风格。所以它一般不会被使用(该控件应该移除来避免困惑)。...如果我们直接把诸如text blocks或者toolkit中的ListPickerItem控件这些UI元素放置于list picker中,那么,在全屏模式显示时,会抛出异常。...换行符(\n)表示强制的换行,它只在一段文字的末尾出现(原文使用固定的行宽度,因此定期放置\n就可以,这就无法完成输出的动态调整)。 2. 回车符(\r)代表新一章的开始。
在Silverlight中,动画有一个更加详细的定义:在时间轴上改变一个属性的值。...在XAML中,有一种方法来触发storyboard的所有行为。因此,我们没有必要在背后代码中调用它的Begin方法。我们可以为一个元素的Triggers属性添加一个事件触发程序。...Silverlight提供了11个不同的过渡函数,每个函数有三种不同的模式,有些函数提供了更深层次的属性行为自定义。...在实际应用中,如果我们想要在动画中加入自定义的函数,那么这种自定义行为的可能性是无穷无尽的。与默认的线性过渡相比,本应用中使用的过渡函数为用户提供了一种完全不同的体验。 ...这样做是为了在动画页面切换期间,防止对屏幕以外的矢量图形进行渲染。这不仅避免了出现非常奇怪的视觉元素,而且也有助于提高应用程序的性能。
做无边框窗口之后,我们有方法可以让窗口的标题栏区域和边缘调大小的区域继续正常工作,直到——这个窗口上面覆盖了其他的子窗口。这个子窗口会吃掉消息导致父窗口的边缘无法再继续处理这些消息。...---- 子窗口遮挡了父窗口 看一下下面的动画,这个窗口的下半部分放了一个子窗口。 然后尝试在边缘调节窗口尺寸,会发现被子窗口覆盖的部分是无法完成窗口大小调节的。...究其原因,是子窗口处理掉了与调窗口大小相关的消息,导致父窗口完全不知道应该如何处理这个时候的操作。...在子窗口处理消息循环 在我的另一篇博客中,我有提到通过处理 WM_NCHITTEST 消息,返回 HT_RIGHT 等来实现支持 Windows 原生窗口功能的效果。...于是,我们需要在消息循环的处理中返回 HTTRANSPARENT 来告诉操作系统这个区域子窗口不处理消息,请交给父窗口。 这里,我以 WPF 的消息循环来写代码。
; /* 隐藏在视图,点击和屏幕阅读器中 */ visibility: hidden; }.grow-wrap > textarea { /* 您可以保留此设置,但是在用户调整大小后,它将破坏自动调整大小...所以你有一个 ,它不能自动展开高度。 相反,您可以在另一个元素中完全复制该元素的外观,内容和位置,再复制的元素隐藏起来。 现在,这三个元素都是相互联系的。...无论哪一个子元素最高,都会把父元素推到那个高度,而另一个子元素也会跟随。这意味着 的最小高度将成为“基础”高度,但是如果复制的文本元素碰巧变高了,所有的东西也会随之变高。...我们还需要在复制的文本上 white-space: pre-wrap; ,因为这就是textareas的表现。 这是最奇怪的部分 在我的演示中,我将 ::after 用于复制的文本。...如果你不这样做,最终的结果会让人感觉 "跳脱"。我不能说我完全理解它,但它似乎更好地尊重了跨textarea和文本元素的换行行为。 如果你不想使用伪元素,嘿嘿,我没意见,只要注意跳动的行为即可。
这就直接导致了应用程序体积的增大。在所有的文件都要从服务器上下载的情况下,这是一个极为严重的问题。如果你的应用大于5MB 加载时间过长的话会直接导致访客的流失。...将素材放在sl应用外部 在之前方式中我们都是针对一个sl应用做的,但是当你在构建模块话的sl应用时,将素材文件放在Silverlight XAP包的外部效果会更好。...(或者放在外部ZIP包中再做压缩,让sl应用动态获取。...使用程序集缓存 使用程序集缓存的办法很简单只需要在sl的属性页面,将library Caching设置为true即可 动态加载XAP 在silverlight开发的过程中可以将模块话,分解成多个xap...在silverlight中可以用简单的loadingXAP来完成(具体请查看“动态加载XAP文件”),或者使用第三方的框架来完成,比如“Managed Extensibility Framework”、
Mono之父Miguel de Icaza 参会微软Mix 07大会。...在eWEEK关于该活动的一篇报道中,Hugunin是这样解释微软的意图的:“我们正在努力做的,并不是做一个动态语言规范,而是提供一个动态语言库,并指导如何去使用它,因为我坚信如果你能够在代码而不是文本中找到什么的话...所以我们试图尽可能多地在代码中找到这样的指导方针。”eWEEK还引用了Lam在同一次会议上的另外一句话。他相信“相当大一部分的动态语言很相似。”...Hugunin是2004年加入微软的,他在开发IronPython的过程中,不得不自己在.Net的核心完成大量的Python和Common Language Runtime(CLR)集成的工作。...这是件了不起的事情,因为它让我们可以利用其他语言中高度调和的组件,例如just-in-time compiler、垃圾收集器、调试支持、反射、动态载荷等等。
如下图所示,当在使用 Apple SD Gothic Neo 字体出现中文和韩文同时显示时,你可能会察觉一些字形很奇怪,比如【推广】这两个字,其中【广】这个字符在超集上是不存在的,所以会变成了中文的...Text Height那如果这时候我问你一个问题: 一个 fontSize: 100 的 H 字母需要占据多大的高度 ?你会回答多少?...所以,看到这里你又知道了一个小技巧:当文字在 Container “有限高度” 内容内无法居中时,可以考虑调整 TextStyle 中的 height 来实现 。...所以 height 参数和文本渲染的高度之间是成倍数关系,具体如下图所示,同时最需要注意的点就是:文本内容在 height 里并不是居中,这里的 height 可以类比于调整行高。...所以,看到这里你又知道了一个小技巧:设置 leading 可以均分高度,所以如下图所示,也可以用于调整行间距。
其实都是为了在一个页面中嵌入其他页面,例如我想在搜狐的网站中嵌入一段人民日报的新闻页面 这种行为在 Electron 官方文档中叫做 Web 嵌入,关于 web 嵌入,后续我们还会出单独的文章进行讨论...大家有些时候在使用应用程序的时候,点击某个功能会跳出来一个新的窗口,这个就叫做子窗口 举个例子,我们在电脑版微信中查看公众号文章时,点击文章,会出现一个新的窗口来显示文章内容,而不是在原本的窗口呢,这样原本的窗口可以继续聊天等...在之前的一些版本中,似乎子窗口会继承父窗口的一些配置,但后来主要是为了生命周期等,简单来说,我把父窗口关了,子窗口也会被关闭或其他设置 该参数要在父窗口初始化是配置,而不是子窗口 0x03 测试 iframe...这听起来就很奇怪,我们测试一下就知道了 我们尝试创建子窗口,在主窗口中设置 nodeIntegrationInSubFrames: false ,并在子窗口设置渲染进程可以执行 Node.js ,咱们看看到底能不能执行...baseWindow 中添加两个 WebContentsView,看看 WebContentsView 的行为是不是受 baseWindow 的 nodeIntegrationInSubFrames 参数的影响
接下来我们先新建一个自定义控件(本文示例中将创建一个用户留言的自定义控件) 先调整一下默认的命名空间(因为Control是Silverlight中的默认控件类,为了避免命名空间与类名重复,建议最好换一个默认命名空间...,复制了一节,并命名为style2,相当于样式表中定义了另一个类名,看下如何应用,仍然在Blend环境中,保持Silverlight项目的MainPage.xaml文件打开状态,注意右侧面板中的Resources...) blend中双击Control项目中的Generic.xaml文件,会提示: ?...我们还是用最简单的图形界面来修改处理吧,再次请出Blend,在上一张图修改样式的界面中,比如我们想让用户能在运行时动态控制宽度,没问题,选中border对象,在右边的属性面板中找到Width设置栏,注意后面的小白点...换言之,style可以同时影响对象的外观和内容,在接下来的尝试中,我们还将看到style的更强大威力,它甚至可以影响到对象的行为。
在外观上,很多人喜欢Hyperlink下面的横线在鼠标MouseOver才显示,另外如上面图片所示插入图片后Hyperlink下面有一条横线,这很奇怪但又取消不了。...不过在Silverlight中为了显示MouseOver时出现的下划线使用了两层内容,一层用于正常显示(contentPresenter),另一层用于显示下划线(UnderlineTextBlock),...我很讨厌这种代码里控制样式的行为,UI和代码应该足够解耦。...UWP很多使用代码控制样式的行为,通常宣称理由是为了性能,但Button是整个UI中最不需要性能的部分,毕竟一个UI中不可能有几百个Button,就算有几百个HyperlinkButton,现代的UI框架也不可能仅仅因为下划线就导致性能下降...在ControlTemplate.Resources中添加了一个TextBlock的全局样式,里面的DataTrigger设置为当鼠标进入父节点的HyperlinkButton时TextDecorations
分析Silverlight Button控件布局 答:关于按钮自适应 Silverlight也算一个比较开放的技术。...(图1) 要做到按钮的宽度和高度根据字体大小和字数自动适应,其实就是调整好Layout,做以一个能自适应的界面。在Silverlight中Grid这个容器是能自适应的。...是把字体TextBlock放到一个Grid中,对这个TextBlock设置相当Grid的边距,就好像是html中Margin的概念一样。...(图2)别的元素也是一样在TextBlock下层是有Rectangle等元素是来制作背景色、边框色,在TextBlock的Rectangle用来制作高光,他们都容纳在Grid中。...在微软官方的控件中TextBlock用contentPresenter来代替。contentPresenter可以简单的理解成一个容器但是只能容纳一个对象。
很多小伙伴第一次遇到跨域问题,大概率会一脸懵逼:“我后端接口明明通了,Postman也能调,为啥浏览器就报红字?” 其实这事儿得怪浏览器的“同源策略”(Same-Origin Policy)。...简单说,浏览器觉得“不同源的请求都是耍流氓”。 比如你的前端跑在http://localhost:8080。 而后端在https://api.xxx.com:8000。...2 解决跨域问题的方案 2.1 CORS(跨域资源共享) 适用场景:前后端分离项目、接口需要兼容多种客户端。 CORS是W3C标准,后端只需在响应头里加几个字段,告诉浏览器“这个接口我允许谁访问”。...父页面(http://parent.com): const childWindow = window.open('http://child.com'); childWindow.postMessage(...最后提醒温馨提醒一下:跨域问题本质是浏览器行为,和HTTP协议无关。 如果你用Postman,发送curl请求,测试没问题,但浏览器报错,别怀疑人生,这可能是前端的锅!
终于开始正式学习silverlight,虽然有点晚,但总算开始了,今天看了一下sdk,主要是想看下silverlight中如何动态调用数据,对于数据库的访问,sdk中的官方示例多用的是Ado.Net数据服务...,方便到是方便,就是感觉Ado.Net数据服务返回的xml太啰嗦了,一点也不精简,数据通讯量太大(N多无用的标签导致客户端与服务端之间传输数据增加了不少),于是想到能否直接用wcf返回json格式, 何况...sdk中提到silverlight中System.Json已经完成了对json的解析 经实验,用WebClient貌似就能解析一切,包括加载json文本,纯文本,以及wcf,不过要注意的是:xap与被调用的...LoadJsonTxt() { Uri serviceUri = new Uri("http://localhost:7055/data/json.txt");//很奇怪...,就是一"启用了ajax的wcf服务",没啥特别的,下面的代码仅参考(从NorthWind数据库中,读取了表Categories的部分信息) Code using System.Configuration
同样,当法线贴图变得太强时,它看起来会很奇怪。灯光表明坡度陡峭,而视差告诉我们它是平坦的。因此,法线贴图仅适用于不会显示明显视差的微小变化。 ?...(材质里带有视差属性) 1.3 调整纹理坐标 要应用视差效果,我们必须使表面的某些部分看起来在其他位置。这是通过在片段程序中调整纹理坐标来完成的。...在使用插值数据之前,应在片段程序中调用ApplyParallax。LOD淡入是一个例外,因为这取决于屏幕的位置。我们不会调整这些坐标。 ? 让我们开始通过简单地将视差强度添加到U坐标来调整纹理坐标。...(U方向浮动) 现在,更改视差强度会导致纹理滚动。增大U坐标将使纹理沿负U方向移动。这看起来还不像是视差效果,因为它是均匀的位移,并且与视角无关。...(动态批处理产生奇怪的效果) 问题在于,在将它们组合在单个网格中之后,Unity不会对批量几何的法线和切向量进行归一化。因此,顶点数据正确的假设不再成立。 Unity为什么不对这些向量进行归一化?
SoundEffect类还提供了其他的特性,我们会在下一章中进行介绍。 使用MediaElement播放音效会导致我们的应用程序无法通过marketplace认证! ...由于使用MediaElement播放音效会导致背景音乐的暂停,带来较差的用户体验。因此,在应用程序发布于marketplace之前,微软会对它进行审查。...该事件对于Silverlight中难以实现的自定义动画非常有用,如Part II“Transforms & Animations”中的基于物体的移动。...另外,为了确保程序的运行,要求用户间隔一段时间点击屏幕的方式并不好,因为那样会导致程序发出用户没有预想到的铃铛声。...在用户按下硬件的音量调整按钮后,任何应用程序的界面顶端会弹出一个93像素高度的媒体控制界面,通过它,我们可以进行暂停、回退、前进或者是更改曲目等操作。
楔子 postMessage 常见于内嵌 iframe 或是 Web Workers 中,用于跨页面(线程) 的消息通信,在一些其他开发环境中也能看到类似的影子,如 Chrome 插件环境、Electron...聪明的你一定想到了基于统一消息格式配合对应的消息处理策略来维护消息事件的方法调用,很简单的机制,却很好用: const childWindow = document.querySelector('iframe...targetEndpoint 上的 postMessage 方法与其配置 换言之,只要浏览器中的其他对象支持 message 事件与 postMessage 方法即可实现同样的封装,即满足接口即可。...promisify 简单,但实际使用消息通信会遇到各种各样的问题: 远程方法调用错误 调用方法不存在 连接超时 数据格式错误(如 worker 中错误传递了无法序列化 dom 对象) .........它允许运行在基于 socket,http 等诸多不同消息传输环境的同一进程中。其使用JSON(RFC 4627)作为数据格式。
从Flash到Silverlight进阶教程 用代码来创建动画 这节里将要讲述一个自定义用户控件最基本的操作,就好象Flash中的MovieClips一样,动态的将其添加到舞台上。...中你只写了一次代码,而其他的都是在可视的状态下完成的,比如说这个MovieClips,你并没有写一句代码,但是已有很多的你看不到的代码falsh的IDE已经帮你都完成了。...这里你会感觉到Silverlight更像以MXML来描述自身的Flex。 在下边我会以Silverlight来重新制作上边的例子,这里以Visual Studio 2008和Blend来做开发环境。...首先用Blend设计UI 调整舞台布局和Flash一样,参考Silverlight初级教程-绘图布局。 创建自定义用户控件,参考Silverlight初级教程-库。...由于silverlight还在发展阶段,建立项目结构的规范还在探索中,这里先以Flex项目的规范来做参考建立silverlight。在根目录建立文件夹“assets”。
很多时候,我们希望有一种方法可以避免某种CSS问题或行为的发生。我们知道,网页内容是动态的,网页上的东西可以改变,从而增加了出现CSS问题或奇怪行为的可能性。...这是另一回事,但尽量使用 flex-wrap 来避免意外的布局行为(在我们的例子中,是水平滚动)。 2.间距 我们开发者需要考虑不同的内容长度。这意味着,间距应该添加到组件中,即使它看起来不需要。...固定高度 我经常看到主内容部分有固定的高度,而内容却大于这个高度,这就导致了布局的破坏。...如果有一定数量的子项目,布局看起来会很好。然而,当它们增加或减少时,布局会看起来很奇怪。 考虑以下例子: 我们有一个有四个项目的 flex 容器。...也就是说,使用auto-fit可能会导致网格项目太宽,特别是当它们小于预期时。考虑一下下面的例子。
领取专属 10元无门槛券
手把手带您无忧上云