[随笔分类]WPF或者Silverligh
文章平均质量分 70
chen_xizhang
服务于微软.NET 平台,SQL Server 平台,Office平台
架构师、资深顾问,高级讲师
展开
-
WPF: Name与X:Name{转载}
该文转载自 http://liutiemeng.blog.51cto.com/120361/121354 简而言之,Name是等同于X:Name的,任何时候针对同一个Element只能设置其中一个属性。Name是更接近于C#开发人员习惯的,X:Name则是XAML风格的定义。 但是很奇怪的是,如果在同一个程序集中使用一个用户控件,则必须使用x:Name原创 2010-01-16 02:37:00 · 547 阅读 · 0 评论 -
WPF:如何实现与WindowsForms程序中类似的NotifyIcon
我有一个好消息,也有一个坏消息。请问你要先听好消息还是坏消息呢? 还是先说坏消息吧,Windows Forms提供的控件有相当一部分在WPF中都没有对应的版本,至少目前是这样。关于这个方法的详细信息,请参考 http://msdn.microsoft.com/zh-cn/library/ms750559.aspx 很不幸,本文谈到的NotifyIcon就属于不支持的一个控件。 而好消息就是Philipp.Sumi创建一个对应的版本,并且可以通过下面的地址获取到 http://visualstudiog原创 2010-03-25 01:46:00 · 1511 阅读 · 0 评论 -
WPF:Main方法到哪里去了?
之前做过Windows Forms开发的朋友一定很熟悉,我们的应用程序都是从Program.cs的一个Main方法开始的,如下图所示 这个Main方法也被称为所谓的“EntryPoint”,也就是说“入口点” 但我们在一个简单的WPF应用程序中却没有找到这个方法 我们首先没有看到Program.cs文件,然后更没有看到所谓的Main方法。难道说,现在不再需要Main方法了么?这似乎说不通,因为我们知道作为exe而言,它要执行的前提就是由CLR调用它的Main方法 然后我们继续查找,通过查看IL代码原创 2010-03-25 01:47:00 · 1459 阅读 · 0 评论 -
WPF:理解ContentControl——动态添加控件和查找控件
我认为WPF的核心改变之一就是控件模型发生了重要的变化,大的方面说,现在窗口中的控件(大部分)都没有独立的Hwnd了。而且控件可以通过所谓的模板提供各种各样的表现形式。 这一篇就来谈一谈ContentControl,的第一部分,动态添加控件和查找控件 什么是ContentControl呢?其实WPF的绝大部分的控件,还包括窗口本身都是继承自ContentControl的。 有的时候,我们需要在窗口出来之后,再动态添加一些控件。例如一个最简单的场景:我们需要做一个扫雷程序,该扫雷程序根据用户选择的难易程度原创 2010-03-25 03:27:00 · 7878 阅读 · 1 评论 -
关于Silverlight对匿名类型数据绑定的问题及其解决方法
这是一个不得不说一下的问题。同样的代码在WPF应用程序中是可以工作的,而在Silverlight中却不可以。我们来看一下例子吧 1.WPF窗体标记 .csharpcode, .csharpcode pre{ font-size: small; c原创 2010-04-28 06:37:00 · 723 阅读 · 0 评论 -
“人在旅途”之随想以及旅游指南(travel.msra.cn)简介
首先让我们来回味马克.吐温说过的一句话: 旅行可以破除偏见、顽固以及狭隘的思想 稍微细想一下,这句话还是很有些道理的。很多时候,我们回头看看走过的路,难道不总是会有一种“人在旅途”的感触么:感慨昨日之日不可留、今日之日多烦忧、而明日之日不可追,然而就是在懵懵懂懂中我们也逐渐成长,或者不管如何,我们总是从一个又一个的驿站,又走向下一个。 前一阵有一位朋友从原先工作的公司离职,据说是和父母走遍了全国好多地方,出去大致有将近1个月吧,回来写了简单总结给俺们看,那个豪迈劲,羡煞旁人啊。下面几句是他的原话原创 2010-05-07 05:20:00 · 841 阅读 · 0 评论 -
Silverlight:动态读取图片或者视频
下面这个小例子演示了如何在Silverlight(或者WPF)中动态读取图片或者视频 页面部分 .csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #原创 2010-01-20 00:57:00 · 797 阅读 · 0 评论 -
Silverlight:设计器的问题
在VS 2008中,可以新建Silverlight 3的项目,但奇怪的是,设计器居然不见了。只有XAML编辑器。这一点与WPF程序是不一样的 下面的截图则是针对WPF项目的 当然,其实在Silverlight的那个XAML设计视图中,也可以通过拖拽显示出来一个可视化的界面。 但区别是,这个界面是灰色的,没有办法直接拖拽控件进去。 既然在Silverlight项目中无法直接可视化设计,那么有没有其他的方法呢?我们发现,有这么一个菜单项目:“在Expression Blend中打开....”原创 2010-01-22 12:52:00 · 488 阅读 · 0 评论 -
Silverlight3 加载其他xap
本文转载自:http://www.pin5i.com/showtopic-26068.html 有些时候我们在设计有集成sl系统的时候总会想把xap作为基点来达到持续集成的效果。那么我们应该怎么做呢?解决方法:1.首先我们要用一个方法实现从源资中提取出Assembly: 1: Assembly LoadAssemblyFromXap(Stream packageStream, String assemblyName) 2: { 3:原创 2010-03-10 02:41:00 · 392 阅读 · 0 评论 -
Silverlight中的多语言支持中几个特殊之处
1. 需要手工修改项目文件才支持多语言,请参考下面文章 http://www.cnblogs.com/KevinYang/archive/2008/11/10/1330305.html 这不得不说是一个很不好的设计 10. 为了编译时能够将语言包打包到Xap包中去,我们需要设置一下工程文件: A). 右键工程文件,选择Unload Project,然后再Edit Project。(或者你也可以直接在工程文件夹中直接修改.csproj文件) B). 找到SupportedCulture原创 2010-03-11 10:32:00 · 589 阅读 · 0 评论 -
Silverlight中使用自定义服务
Silverlight中,可以通过所谓的自定义服务的方式 ,在后台运行一些特殊功能,例如定期检查远程网站资源等等 。 1. 编写一个自定义服务using System.Windows;namespace BusinessApplication1{ public class MyService:IApplicationService,IApplicationLifetimeAware { #region IApplicationService 成员原创 2010-03-11 12:43:00 · 514 阅读 · 0 评论 -
WPF:如何实现单实例的应用程序(Single Instance)
好吧,这是我将WPF与Windows Forms进行比较的系列文章的第四篇,讨论一下如何实现单实例(single instance) 先来看第一种最简单粗暴的做法: 检测进程名,如果名称一样,则表示程序已经启动了,就不再启动. protected override void OnStartup(StartupEventArgs e) { // Get Reference to the current Process Process thisProc = P原创 2010-03-25 01:44:00 · 2328 阅读 · 0 评论 -
MOSS 2010:Visual Studio 2010开发体验(17)——在Silverlight应用程序中访问客户端对象模型
上一篇我们开始介绍到了客户端对象模型,这是MOSS 2010提供的一套全新的API,它允许我们在客户端应用程序(包括控制台,Windows Forms,或者Silverlight应用程序)能够方便地访问到SharePoint的数据和组件。典型的引用是列表数据查询。(但不仅限于此) 我们这一篇将继续这个话题,我们来看看在Silverlight应用程序中如何使用客户端对象模型。这与之前的控制台应用程序还是有些不一样的。根本性的区别在于异步操作。 【注意】在Silverlight中使用客户端对象模型访问Sha原创 2010-04-28 02:52:00 · 935 阅读 · 0 评论 -
RIA Service 的 SOAP EndPoint
越来越多的朋友都在使用Silverlight开发应用程序,其中我们常用的还会有一个特殊的服务,就是RIA Service,具体来说,它是一个所谓的Domain Service. 关于这个服务的基本概念,如果有不清楚,请参考下面这个网址 http://www.silverlight.net/getstarted/riaservices/ 今天这一篇是要谈谈一个问题,就是如何让RIA Servic原创 2011-06-14 10:36:00 · 1372 阅读 · 0 评论 -
RIA Service中对于递归实体类型处理的问题及解决方案
故事是这样开始的: 我们在开发一个Silverlight应用程序的时候使用到了RIA Service,我们需要通过该服务公开一个对文件夹的查询操作。 为此,我们建立了如下的一个实体类型using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Ru原创 2011-06-10 03:32:00 · 1104 阅读 · 0 评论 -
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
这是项目中一个页面上的一个功能。我们需要在界面上通过一个TreeView控件显示一个递归的树状结构,也就是说会很多层嵌套的节点,而且层数是不确定的。 这个功能,可以通过HierarchicalDataTemplate来很方便地实现 1. 业务实体 作为举例,我定义了一个大家都很熟悉的Folder类型,即文件夹。我们都知道,文件夹又可以包含子文件夹,而且可以多层嵌套。所以,这是一个递归的结构体。原创 2011-06-22 15:20:00 · 1280 阅读 · 0 评论 -
WPF:如何为程序添加splashScreen?
大家是否还记得在Windows Forms程序中如何实现splashScreen吗?我们一般都会使用Microsoft.VisualBasic.dll中提供的那个WindowsFormsApplicationBase类型,它有一个所谓的splashscreen属性,可以指定为一个窗体的。 那么,同样的需求在WPF中如何实现呢?这要从两头来说,从简单来说,它实在是简单了。 事实上,这是.NET Framework 3.5sp1的一个特性 http://blogs.msdn.com/jgoldb/archive原创 2010-03-25 01:45:00 · 2177 阅读 · 0 评论 -
Silverlight的跨站策略和跨站策略文件
如果我们需要在Silverlight中跨站调用Web Service,则可能会遇到这个问题:默认情况下,Silverlight是不允许你这么做的。那么如何来解决该问题呢,请看Tim下面的这篇文章 http://timheuer.com/blog/archive/2008/04/06/silverlight-cross-domain-policy-file-snippet-intellisense.aspx 简单而言,Silverlight并非不支持跨站调用,而是会首先检查一个文件clientaccesspo原创 2010-03-12 00:11:00 · 554 阅读 · 0 评论 -
Silverlight应用程序 的隔离存储
我们都知道Silverlight的应用程序其实是属于客户端应用。那么它们如果需要在客户端机器存储一些文件,就自然需要一定特殊的机制 。 这两天在讲.NET Framework的时候就讲到了隔离存储机制 ,有些朋友对此不甚理解。其实Silverlight就是一个很典型的应用场景。因为Silverlight程序通常权限是很低的。 首先来看,用户可以通过选项控制是否允许Silverlight程序在本机存储数据 默认情况下,浏览器中的Silverlight可用的空间为1MB,浏览器外的,则为50MB 那么,我们原创 2010-03-10 06:41:00 · 670 阅读 · 0 评论 -
Silverlight隔离存储(续)
我之前的一篇日记说到了隔离存储的问题,简单而言,它就是提供给Silverlight应用程序可以在用户机器上做一些文件存取的机制 。 事实上,除了我们自己写文件之外,还可以直接利用IsolatedStorageSettings这个类保存一些应用程序的设置信息。看起来的确很方便 下面是一个简单的例子1 using System.IO.IsolatedStorage;23 namespace SearchMonitor.Model4 {5 public class Help原创 2010-03-10 13:13:00 · 473 阅读 · 0 评论 -
WPF:如何在工作线程中更新窗体的UI元素(Dispatcher机制)
这是一个普遍的问题:如果我们再程序中使用了多线程技术,而工作线程(后台线程)如果需要更新界面上的元素(例如进度条等),就会有一个线程安全性问题,因为进度条是由主线程创建出来的。 关于这一点,大致上看,WPF的机制与Windows Forms是没有差别的。我们在Windows Forms中需要按照下面的方式更新窗体元素。 using System;using System.Windows.Forms;using System.Threading;namespace WindowsFormsA原创 2010-03-25 01:44:00 · 3528 阅读 · 0 评论 -
Silverlight中结合数字版权管理 (DRM)
该文请参考http://msdn.microsoft.com/zh-cn/library/cc838192(VS.95).aspx 另外还有一篇与DRM有关的材料 http://blog.csdn.net/lycoo/archive/2005/04/20/355154.aspx原创 2010-04-04 14:49:00 · 496 阅读 · 0 评论 -
如何让一个现有的程序集运行在Silverlight环境中
故事是这样的:我们有一个组件,是一个标准的Class Library,里面有一些代码是实现了某些计算或者业务逻辑。例如下面这样 然后,我们做了一个Silverlight的应用程序,和一个用于运行该程序的网站 我们想让这个按钮,能调用DAL中Customer的PlaceOrder方法。这样的要求很自然不过了吧 我们马上会想到,要在SilverlightApplication中添加对DAL项目的引用。 很不幸,我们居然会遇到一个错误 这个错误提示的意思是说,你只能引用Silverlight项目。原创 2010-10-09 09:35:00 · 680 阅读 · 0 评论 -
如何在WPF中定义窗体模板
可以在app.xaml中定义一个ControlTemplate,指定TargetType为Window原创 2010-01-10 13:25:00 · 1019 阅读 · 1 评论 -
WPF:逻辑树和视觉树
通过下面的方式可以查看WPF的控件树,分为两种:逻辑树和视觉树。其中逻辑树是视觉树的子集。 public Window1() { InitializeComponent(); Debug.WriteLine("逻辑树"); PrintLogicalTree(0, this); } protected override void OnCont原创 2010-01-16 03:03:00 · 1242 阅读 · 0 评论 -
WPF:Window Icon
http://msdn.microsoft.com/en-us/library/system.windows.window.icon.aspx A WPF window always displays an icon. When one is not provided by setting Icon, WPF chooses an icon to display based on the following rules: Use the assembly icon, if specified. If原创 2010-01-16 04:00:00 · 2537 阅读 · 0 评论 -
在Silverlight中读取ADO.NET数据服务的两种方式
1。 数据服务的返回数据格式 注意,没有办法通过添加引用的方式调用该服务,估计有安全方面的一些考虑吧 2。因为ADO.NET数据服务是可以直接通过http请求实现,所以下面两个代码都可以完成工作 首先准备地址和查询,并且直接通过webclient来发起请求即可 Uri svc = new Uri(Application.Current.Host.Source, "../NorthwindService.svc/Customers()?$orderby=CustomerID d原创 2010-03-10 11:32:00 · 603 阅读 · 0 评论 -
MOSS 2010:Visual Studio 2010开发体验(18)——在独立的Silverlight应用程序中通过WCF访问SharePoint数据
上一篇我讲到了如何在Silverlight中使用客户端对象模型访问SharePoint数据,诸如列表,列表条目,文档之类都是可以的,而且这个对象模型是很完整的,它既可以做数据查询,还可以做操作。简单类比一下就是,原先服务器对象模型能做的,客户端对象模型也大致能做。 有关服务器对象模型,请参考http://www.cnblogs.com/chenxizhang/archive/2010/04/05/1704550.html 有关客户端对象模型,请参考http://www.cnblogs.com/chenxiz原创 2010-04-28 04:52:00 · 876 阅读 · 0 评论 -
在WPF程序中使用多线程技术
在WPF应用程序中使用多线程的方式与Windows Forms很类似,区别在于,如果需要更新主线程UI上面的元素,需要用一个特殊的方法(this.Dispatcher.Invoke) 下面是一个简单的范例,演示了如何执行一个简单的方法,它使用了callback的机制进行多线程异步执行。 Func func = new Func(() => { Thread.Sleep(5000); retur原创 2010-01-10 11:15:00 · 603 阅读 · 0 评论 -
Silverlight:如何在程序中获取网站的根目录
如果需要在Silverlight程序中获取当前网站的根目录,不能使用HttpContext.Current这样的方式,而需要用 @HostingEnvironment.ApplicationPhysicalPath原创 2010-01-21 07:13:00 · 976 阅读 · 0 评论 -
Silverlight:如何在使用WCF的时候动态指定服务地址
因为Silverlight做好的组件可以用在任意的网站,而其调用的WCF服务一般都不可能将地址固定地写在Silverlight控件内部,如何保持这种灵活性呢? 关键在于通过Application.Current.Host可以获取到一些必要的信息,请看下面的例子BasicHttpBinding binding = new BasicHttpBinding(Application.Current.Host.Source.Scheme.Equals("https", StringComparison.Invari原创 2010-01-22 13:31:00 · 560 阅读 · 0 评论 -
RIA 亮剑行动
微软的RIA平台,你了解吗?Silverlight,你用过了吗? 大戏正在上演,不管你是否感觉到,你我都是戏中人,嘿嘿 http://www.microsoft.com/china/expression/solutions/原创 2010-03-11 04:45:00 · 2138 阅读 · 0 评论 -
通过t4模板结合XML定义文件生成MVVM中的Model Entity Class 代码
在之前的两篇文章,我针对MVVM项目实践中如何简化Model和ViewModel类型的编码工作,提供了两种不同的方法。它们分别是 如何利用AOP简化MVVM中Model和ViewModel的设计 http://www.cnblogs.com/chenxizhang/archive/2011/06/24/2089392.html 如何利用Interception简化MVVM中的Model和V原创 2011-06-25 11:14:00 · 2456 阅读 · 0 评论