Silverlight/WPF中,如果要在多线程中对界面控件值做修改,用Dispatcher对象的BeginInvoke方法无疑是最方便的办法 ,见:温故而知新:WinForm/Silverlight多线程编程中如何更新...UI控件的值 但今天发现WPF中的BeginInvoke却无法自动将匿名方法/Lambda表达式转变成Delegate类型(注:对委托,匿名方法,Lambda感到陌生的朋友先阅读温故而知新:Delegate...,Action,Func,匿名方法,匿名委托,事件) silverlight中的代码片段: private void button1_Click(object sender, RoutedEventArgs...,同时还要定义相应的委托类型,难道不能象Silverlght中那样清爽一点么?...不过仍然有点疑问:为啥编译器能自动认别Silverlight,却不认WPF呢?这算不算是编译器的BUG(或是需要改进的地方)
如何编写 WPF 的标记扩展 MarkupExtension,即便在 ControlTemplate/DataTemplate 中也能生效 发布于 2018-05-29...12:56 更新于 2018-05-30 01:34 WPF 的标记扩展为 WPF 带来了强大的扩展性。...利用自定义的标记扩展,我们能够为 XAML 中的属性提供各种各样种类的值,而不仅限于自带的那一些。...只要赋值的那个属性接受 Brush 类型,就不会出错。 然而……有小伙伴写了更加复杂的标记扩展,在标记扩展中还通过 serviceProvider 拿到了目标控件的一些属性。...中,XAML 标记扩展也是立即执行的,这就意味着当标记扩展中的 ProvideValue 执行时,还没有根据模板创建控件呢,那创建的是什么呢?
{x:Null}:用于设置某属性值为Null,比如,其实就相当于,个人感觉这个纯属MS的多余设计 另外要注意一个问题:...Rectangle_MouseLeftButtonUp事件,因为矩形Fill属性为null,没有填充,相当于透明,所以鼠标点击穿透矩形,点到下面的东西上去了 解决办法:设置Fill="#00000000" 即设置一个完全透明的颜色...d:DesignWidth=640,d:DesignHeight=480,这二个标记在blend中特别有用 <UserControl x:Class="MsShowCase.NavItem" xmlns...默认情况下,silverlight总会有一个固定的尺寸,要想让其自动扩展,很简单把Height="640",Width="480"删除即可(或设置成Auto),但是这样处理后,用blend再打开该xaml...再用blend打开时,会发现可视区域变成640*480了,而运行时即仍然可以自动扩展
---- theme: channing-cyan 这是我参与8月更文挑战的第24天,活动详情查看:8月更文挑战 今天我们说一下插入标记,我们熟悉的插入有innerHTML,其实还有几种和他类似的方法,...插入标记 我们之前用的api大多数都是获取元素内容,HTML5规范中定义了一个向标签元素内添加内容的方法。...innerHTML innerHTML是向元素内插入一个字符串,注释或者文本标记,它会根据现在提供的内容重新渲染到DOM树上,替代之前元素包含的所有节点。...,作为下一个同胞节点 他们的第二个参数就和我们上面innerHTML和outerHTML中需要的属性一样了,我这里写一个方式吧。...性能问题 我们虽然这样操作的话会比我们修改HTML中的内容方便,但是我们修改的内容如果还有其他绑定js事件或者操作,就会导致内存占用比较大,我们在用的时候一定要注意被替换的元素上所关联的js事件。
Silverlight 2 包含一个 CLR,但并不是其他 .NET 应用程序和程序集使用的 CLR. Silverlight CLR 也称为 CoreCLR,在设计时充分考虑了不同用途。...CoreCLR 专为跨平台互操作性而设计,可与 CLR 同时运行并支持不同的安全模型以及不同版本的基础类库。 CoreCLR 是 Silverlight 使用的虚拟机。...Silverlight 和 .NET 应用程序使用不同 CLR 意味着您不能在两个针对 .NET 应用程序和 Silverlight 应用程序的项目中引用同一个程序集。...Silverlight 正常使用所需的功能集非常小-仅仅是内核。但任何 .NET 程序集都要链接标准版本的 mscorlib,这就是问题所在。...2 中的安全性:http://msdn.microsoft.com/magazine/cc765416
Silverlight是基于时间线的,不象Flash是基于帧的,所以在Silverlight中,很少看到有文档专门介绍SL中的帧。...但是我们从动画原理知道,动画只不过是一幅幅静态图片连续播放,利用人眼的视觉暂留形成的,因此任何动画从原理上讲,至少还是有每秒播放多少帧这个概念的。...Silverlight的sdk文档中,有一段话: ... maxFramerate 值可通过 Silverlight 插件对象的 maxframerate 参数进行配置。...maxframerate 参数的默认值为 60。currentFramerate 和 maxFramerate 是报告每秒帧数 (fps) 的值。实际显示的帧速率设置为较低的数字。...,运行效果: 拖动滑块,观察一下时间更新的快慢,同时注意浏览器左下角状态栏的显示,当然 CompositionTarget.Rendering不仅仅只能用来显示时间,还能做更多的事情,大家就尽情发挥想象吧
在编写 WPF 程序时,会发现 Main 方法上方会标记 [STAThread] 。 作用:STAThread 标记主线程,也就是 UI 线程是 STA 线程模型。 1 什么是 STA ?...与 STA(Single-Thread Apartment)对应的,是 MTA(Mutil-Thread Apartment),是 COM 组件中的概念,用于指示一个 COM 组件的线程模型。...用到了 STA 线程模型的 COM 组件,则线程也需要是 STA 模式。 如果没有标记,则线程默认是 MTA 模式。...WPF 的 UI 单线程 WPF 的 UI 是单线程的,直接跨线程访问 UI 元素会出现访问错误,可以使用 Dispatcher 进行封送 UI 操作,具体可以参看:Windows 消息循环 - WPF...中的消息循环 。
整理导航模块“LeftNav” 首先说一下我想要实现的效果。 我希望在左侧的导航点击了以后右侧的主体部分发声变化。 之前我在LeftNav模块用的控件是ToggleButton并为其制作了样式。...本来想的是自己根据ToggleButton作为基础自己在做一个复合控件出来。不过这里做导航的话,ListBox会更加的适合些。...ListBox的样式制作和之前的ToggleButton样式制作大同小异,都是一个原则:各个VisualStateGroup中的视图状态是可以共存的,VisualStateGroup内部的视图状态只能同时出现一个...,尽量不要在多个VisualStateGroup同时改变同一个元素的属性。...需要做到替换主体部分的思路就是先从主体区域得到当前Module,将其移除再载入新的Module。这样会比较适合我当前的项目。
通过外部配置文件加载模块module 在上一节中为项目引入了“Prism”框架,并建立了一个Hello Prism做测试。这里要把项目好好的整理一下。使其更加的合理和具有可扩展性。...我的目的是,在左侧的导航栏目里点击按钮,相应的右侧的主体部分显示不同的内容。这些内容都是来自外部加载进来的xap文件。我可以上传管理自己的xap文件。...关于Module的加载,园子里的包包同学已经对他做了很详细的分析。...具体请看《Prism研究(for WPF & Silverlight)5.Module研究》 在看完了他的文章后,了解到加载Module有两种方法: 1.手动加载Module 例: protected...这里我发现配置文件都是在xap文件内部的。不过在可以直接传入一个配置文件的流来进行实例化。
Silverlight 3.0 中的 WriteableBitmap 尽管矢量图形非常的强大但是在有些情况下还是需要用到位图,因为他们在运行时能得到更高的执行效率和渲染效果。...在Silverlight 2.0中获得位图的唯一途径就是从服务器下载并将其嵌入到一个Image元素上。 在Silverlight 3.0中添加了一个新的图形类,WriteableBitmap。...他可以动态的呈现位图,再结合上矢量图形一起运用,对于拍摄视频播放快照、生成算法内容(如分形图像)和数据可视化(如音乐可视化应用程序)很有用。...image.Margin = new Thickness(5); image.Source = wb; // 将Image元素放入容器控件中...{ wbopt.Render(myMediaElement, null); wbopt.Invalidate(); } 扩展
在实际应用中,可能会使用更多的属性和选项,以满足不同场景下的需求。绑定是 WPF 中强大而灵活的特性,可以提高应用程序的可维护性和灵活性。 6. 什么是 XML 扩展 XAML?有何优点?...在WPF(Windows Presentation Foundation)中,XAML(eXtensible Application Markup Language)是一种用于声明性定义用户界面结构和外观的标记语言...3、与其他技术的集成 XML 扩展 XAML 使得 WPF 能够与其他使用 XML 的技术更好地集成。例如,可以使用 XML 数据源直接绑定到 XAML 中的界面元素。...总体而言,XML 扩展 XAML 是一种强大的、可读性强的标记语言,为 WPF 提供了一种灵活、可维护的方式来定义丰富的用户界面。 7. 解释什么是依赖属性,它和以前的属性有什么不同?...总的来说,依赖属性是WPF框架中的一个关键概念,提供了一种高度灵活、可扩展的属性系统,适用于构建现代、富交互的用户界面。 8. WPF 中什么是样式?
文章目录 前言 块级元素 行内元素 行内块级元素 ---- 前言 HTML中的标记 块级元素 h1-h6>>1-6级标题 p>>段落 div>>定义文档中的节 ul>>定义无序列表 ol>>定义有序列表...>定义定义列表中项目的描述 menu>>定义命令的菜单/列表 table>>定义表格 caption>>定义表格标题 tbody>>定义表格主体 thead>>定义表格头部 tfoot>>定义表格中的表注内容...(脚注) tr>>定义表格中的行 th>>定义表格中的表头单元格 colgroup>>定义表格中供格式化的列组 col>>定义表格中一个或多个列的属性值。...比如章节、页眉、页脚或文档中的其他部分 article>>定义文章 aside>>定义页面内容之外的内容。【可用作文章的侧栏。】 datails>>定义元素的细节。...) iframe>>定义内联框架 canvas>>定义图形 td>>定义表格中的单元格
整理Module 在第三节里边,建立了一个最简单的Module。这里要对其再进行整理。之前我写过一篇《简练的视图模型 ViewModel》这里就讲述了一个最最基本的运用视图与模型的例子。...用模型来控制视图的呈现在很早的时候就提出来了。当然Prism这个框架也包括了这一点。这里就要为Module加入Model。...public interface IHelloPrismView { HelloPrismModel model { get; set; } } 3.修改原来的HelloPrismView.xaml
现在很多的需求中需要一个插件实例和另一个实例进行通讯。在同一个页面中调用Html、js等来通讯,而这个往往有一些限制,需要专门的去设置一些权限。...在Silverlight 3.0 中新增了一个功能使得跨越实例的通讯变得极为的简单,这个功能为本地连接。 通过本地连接就也可以在不同页面间多个Silverlight实例创建通讯通道。...这样就可以创建多个基于Silverlight的应用程序或者基于其他技术的内容在一起的复杂布局。...,但是只接收来自指定发送器域的消息。...-3-using-local-connections http://www.wintellect.com/CS/blogs/jprosise/archive/2009/03/26/silverlight
XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如映射为WPF的Button对象...XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素 了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是..., 但XAML的解析器可以把这些字符串转换成.NET的任意类型 名称空间 在上面代码中,用xmlns属性来标记此文档从属于哪个名称空间 为什么需要名称空间呢?...解析器也能创建出复杂属性对应的值即可 标记扩展 如果我们希望把属性值绑定为一个已经存在的对象,那么我们可以使用静态标记扩展 标记扩展还有很多其他的用法,我们以后再聊 这里也涉及到了属性绑定,我们以后再聊...附加属性 对于嵌套的元素,子元素可以使用父元素定义的一些属性,这类属性就是附加属性 在WPF中附加属性多用于布局 修改记录 2015-1-5:完成全部内容 参考资料 《Pro
序列化简言之是这样一种能力:能够把复杂的对象(Object)变成某种格式的字符串(常见的格式有xml,string,二进制文件等),这样可以方便的在各种系统中传输或交换(比喻socket编程中的数据包只能用...,构造一个复杂对象,然后序列化为二进制格式,得到该格式后,再反序列化(还原)为复杂对象 Winform中的序列化 1 using System; 2 using System.IO; 3...中,传统的序列化方式有很多被精减掉了(比如BinaryFormatter之类),唯一得以保存的只剩下System.Xml.Serialization,所以SL中只能通过xml来序列化对象(虽然xml序列化后的字节数相对...Binary有点大,不过我们也别无选择),另外有一点很让人不习惯的是,需要序列化的自定义类中,居然不需要加[Serializable],[DataMember]这类标记!...(这一点让我郁闷了好久,还为此在网上疯狂的百度,google为啥sl中不识别Serializable) 1.先定义一个需要序列化的类 自定义类 namespace SerializeDemo {
Silverlight 中的 UIElement 与 FrameworkElement 在 Silverlight 中, 有两个比较重要的基础控件 UIElement 和 FrameworkElement...(UIElement 是 Silverlight 中具有可视外观并可以处理基本输入的大多数对象的基类。)...(FrameworkElement 为 Silverlight 布局中涉及的对象提供公共 API 的框架。...FrameworkElement 还定义在 Silverlight 中与数据绑定、对象树和对象生存期功能区域相关的 API。) 这两个控件的的继承关系如下: ?..., Silverlight 实现了一个布局系统, 这个布局系统读取许多在 FrameworkElement 级别定义的属性(MinWidth、MaxWidth等), 并为特殊的布局行为提供了可扩展的方法
Electric Rain ZAM 3D自动生成XAML(扩展应用程序标记语言)标记可以方便的拷贝至Visual Studio或者Expression Blend中。...点击后发现Animating图标的背景色变红了,表示在录制动画的状态,而且上方的时间帧也处于可拖动状态,如下图 ? 6. 选择3D动画的效果, ? 7....此时,我们可以将这个动画导入到我们的WPF或者Silverlight项目中,这个我是导入至Expression Blend中的,我们可以使用菜单栏—>编辑—>Copy XAML将xaml代码拷贝出来,或者使用菜单栏...这里我们选择导出为xaml文件,可以选择保存路径,默认路径为安装路径下的ZAM 3D\Version 1.00\Files中 11....12.最终的运行效果如下: ? 小结:我们发现我们可以使用ZAM 3D十分方便的创建出适合WPF和Silverlight的3D效果 ?
WPF中的MatrixTransform 周银辉 虽然在WPF中可以使用TranslateTransform、RotateTransform、ScaleTransform等进行几何变换...可以将矩阵的第二和第三个元素设置为0并用矩阵中M11和M22来进行缩放操作,其中M11是对X坐标进行缩放,M22是对Y坐标进行缩放 2,旋转操作 观察下面的矩阵乘法: ?...注意:平移变换不是线性变换),即将点对应的矩阵乘以该线性变换矩阵便可。 3,平移操作 在矩阵加法中: ? 我们可以发现点(3,5)实际是在点(2,5)的基础上想X方向平移1一个单位。...其实我们更希望将仿射变换中的几个矩阵存储到一个矩阵中来,一种较好的方式是将变换用到的2X2矩阵变成3X3矩阵,这也就是为什么我们WPF中的变换矩阵是3X3的。 在如下矩阵中: ?...由于最右边一列始终是001,所以WPF中的MatrixTransform类的构造函数仅仅需要指定6个参数。
项目开发中遇到一个要求,需要将ComboBox右侧中的小三角箭头给去掉,通过Blend工具“编辑ComboBox的模板副本”得知,这是一个名为"BtnArrow"的Path。...但是在CS代码中,是无法引用到这个控件的。...// // Returns: // 模板中的命名元素(如果已找到)。...如果在模板中找不到具有名称 childName 的元素,则可能返回 null。...方法,所以只能在子类中使用,这也就是为什么在常规Xaml.cs文件中无法获取ContentTemplate中命名控件的原因。