作者: 

Scott Guthrie

出处: 

http://blog.joycode.com/scottgu/

【原文地址】Silverlight Tutorial Part 8: Creating a Digg Desktop Application using WPF
【原文发表日期】 Friday, February 22, 2008 5:46 AM

这是8个系列教程的第八部分,这系列示范如何使用Silverlight 2的Beta1版本建造一个简单的Digg客户端应用。这些教程旨在按顺序阅读,帮着解释Silverlight的一些核心编程概念。

使用WPF创建一个Digg桌面应用

这 最后一个教程的目的与前面7个有点不同。我们实际上不将在本教程里在Silverlight中运行代码,而是将使用WPF和.NET 3.5。我们将拿我们编写的,在浏览器中运行于Silverlight中的现有的Digg应用代码,重用它来以Windows桌面应用的方式运行。

随Silverlight发布的是一套与.NET 框架完整版本相兼容的API子集。这么做的目的就是允许开发人员学习一个共同的编程模型和工具集,能够在RIA web应用,丰富的Windows桌面应用和Office解决方案之间重用学到的技能,代码和内容。

下面是我采取的步骤,来重用我们现有的Digg Silverlight应用代码(运行于浏览器中),来建造一个Windows桌面应用的版本(运行于浏览器外)。

第一步:创建一个新的WPF桌面应用

我们先开始使用VS 2008创建一个新的WPF桌面应用。我们将之命名为“DiggDesktopSample”:

这会在VS中创建一个项目,内含2个文件,一个App.xaml,一个 Window.xaml:

注意,这个项目的结构与我们在本系列教程的第一篇里创建的Silverlight应用的结构非常类似(拥有一个App.xaml 文件,一个 Page.xaml 文件)。

第二步:把现有的Digg应用的代码拷贝进WPF应用中

我们将把现有的DiggApplication Silverlight代码拷贝/粘贴进我们的新DiggDesktopSample Windows项目中:

目前在Beta1版本中,这个拷贝/粘贴是个手工步骤,我们最终将有一个自动化的方式来在不同项目类型间移动代码。

第三步:修正几个问题

我需要做2个改动,才能使我们现有的Digg例程代码被成功编译:

1) Silverlight Beta1 XAML定义的命名空间 xmlns:URL与完整的WPF桌面版本不同。我需要改动我拷贝进新项目的XAML文件指向完整WPF的定义。这是在发布前我们还正在研究的东西。

2) 我需要把<&lt;WaterMarkTextBox>控件改成<TextBox>,把 <HyperlinkButton> 控件改成<TextBlock>。这2个控件是Silverlight Beta1 版本中新有的,不存在于完整的WPF版本中(但我们会在将来添加它们)。但我不用改动跟这些控件相关的任何代码,也不用改动网络调用,LINQ to XML, 或数据绑定代码。

做完这些小改动后,项目就可以干净地编译了。

第四步:把Digg应用宿主与桌面窗口中

然后我打开桌面项目中的Windows1.xaml 文件(它是在应用启动时装载的默认窗口)。

我把窗体的标题改成“Digg Desktop Version”,扩大了窗口默认的宽度和高度。

然 后我把来自前面的Digg Silverlight 项目中的Page.xaml 用户控件加到窗口中作为根控件。这在窗口装载时,会载入该控件并使之可见。我不用改动Page类的代码,或者对其中的东西改名。因为是从 UserControl继承而来,它是完全可以宿主于任何WPF窗口或控件中的。

我 改动的最后一样东西是因为Digg REST API 服务器会试着检测是否是非浏览器/服务器在访问它,有时会在这些情形下给予一个拒绝访问的回复(大概是防止自动脚本访问他们的服务)而导致的一个问题。我 通过让网络访问经过一个代理URL解决了这个问题(没有代码变动,只是URL改动)。

第五步: 运行应用

然后,我能够运行我们新的DIgg桌面应用。所有的功能都跟Silverlight的版本一样工作,应用的行为也完全一样:

在从列表中选择一个故事后,细节用户控件显示为:

浏 览器版本和桌面版本间有几个细微的样式区别。这主要是因为WPF在默认情形下继承了基于当前用户选择的操作系统主题的默认样式(字体,颜色,卷动条等 等),而Silverlight 则有一个我们在所有操作系统上都使用的默认主题。如果我们要使得桌面版本和浏览器版本绝对一致,我们可以在我们的样式和控件模板中更明确地指定,否则的 话,桌面版本会基于用户的OS主题做稍微的变动。

结语

我们会在将来推出在Silverlight和WPF项目之间共享代码的更详细的注意事项和推荐 的最佳实践指南。我认为你会发现你在建造Silverlight应用时学到的技能和知识可以很好地转移到完整的WPF的项目中去。我们也致力于一个非常高 的兼容水平,能在解决方案间促进好的代码重用,促进控件,内容和代码的轻松共享和利用。

希望本文对你有所帮助,

转载于:https://www.cnblogs.com/mgod/archive/2008/05/22/1205137.html

使用WPF创建一个Digg桌面应用相关推荐

  1. 使用C++代码创建一个Windows桌面应用程序

    下面六星教育整理使用C++代码创建一个Windows桌面应用程序,供大家学习参考. WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HI ...

  2. 使用python创建一个windows桌面在线翻译小程序

    1.首先需要制造打包的gui界面 这里小编使用的是 wxFormBuilder 下载地址:链接:https://pan.baidu.com/s/1DOe7TA6ap07ZsjcH4qzBIQ 密码:2 ...

  3. 如何创建一个 Windows 桌面应用程序?

    工具:Visual Studio 2017 Community 在大学期间,不过学习 C/C++ 还是 Java,每次写的程序都是控制台黑框框,有时候想设计一个可视化的应用程序却不知从何下手,大学里面 ...

  4. win7系统怎么样在计算机里找桌面,如何在64位win7电脑中创建一个“显示桌面”的快捷方式...

    在之前的XP系统中,咱们桌面下方的任务栏窗口中是有一个"显示桌面"的图标的,不管咱们在电脑中开启多少网页,开启多少程序,只需要点击一下这个"显示桌面"的图标,咱 ...

  5. VC++创建一个自定义桌面图标

    学习xbmoxia的文章原文地址 http://blog.csdn.net/xbmoxia/article/details/14165221 VS 2010 sp1 环境 1:打开解决方案资源资源管理 ...

  6. WPF教程(一)---创建一个WPF程序基础知识

    1.前言: 这篇主要讲WPF的开发基础,介绍了如何使用Visual Studio 2019创建一个WPF应用程序. 首先说一下学习WPF的基础知识: 1) 要会一门.NET所支持的编程语言--例如C# ...

  7. 创建一个显示所有预定义WPF颜色的ListBox

    原文 Creating a ListBox that Shows All Predefined WPF Colors 在WPF中,您可以使用Colors类访问一系列预定义颜色,这些颜色定义为Color ...

  8. 在桌面上创建一个宽带连接服务器,win7宽带连接怎么创建桌面

    win7系统是一款大家用了都说好的系统.最近一直有小伙伴们在问win7宽带连接怎么创建桌面的问题?今天小编就为大家带来了win7宽带连接创建设置一起来看看吧. win7宽带连接创建设置: 1.点开始, ...

  9. VS2010 教程:创建一个 WPF 应用程序 (第一节)

    来自:https://msdn.microsoft.com/zh-cn/library/ff629048.aspx [原文发表地址] VS2010 Tutorial: Build a WPF App ...

  10. 在VS中手工创建一个最简单的WPF程序

    如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件--新建--项目--空项目,创建一个空项目. 第二步:添加引用,Presen ...

最新文章

  1. 根据“坐标”生成趋势图
  2. 【Cucumber】【命令行】
  3. Nessus Scan
  4. 读取oracle注释
  5. redis、memcache、mongoDB有哪些区别?
  6. JavaScript实现hammingDistance汉明距离算法(附完整源码)
  7. JEECG - 基于代码生成器的J2EE智能开发框架 续二: 代码生成器使用规则
  8. 自动化测试之--参数化
  9. Python基础笔记(三) dict、set、函数
  10. vue-scroller的使用
  11. C语言进行可视化编程
  12. 一天搞懂深度学习—学习笔记2(CNN)
  13. HTML5移动开发的10大移动APP开发框架
  14. WIN提权总结【本地存档-转载】
  15. SQL200修改服务器IP,如何修改SQL IP地址
  16. Aras Innovator: 如何在Form中放入图片
  17. opencv subtract函数内存泄漏
  18. python学习——关于曲线拟合
  19. 神经网络实现猫的种类识别
  20. mysql慢sql分析平台_慢SQL分析工具 - __KK的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. Metasploit 线程代码注入工具
  2. 【转】如何构建达芬奇的DSP Server
  3. Visual Studio C# CS0006 C# 未能找到元数据文件
  4. 人工智慧能学习穿衣图像分割完整教程(附python代码)
  5. 陕西柳林酒业集团恭祝陕西省“质量强省品牌兴陕企业品牌推广峰会”圆满召开
  6. Gym 100962E Elvis Presley (二叉树模拟 + set)
  7. 2017年2月28日笔记与反省
  8. MyBatis使用(二)分页查询
  9. Android 广告植入 简例
  10. [769]python汉字首字母拼音排序