对于初次面对这么一个曾未接触的wpf项目,我们的历程是艰辛的,但我们的收获是不菲的,就学术型的收获就已经比我在学校课堂的收获多很多啊!现在我技术总结在此,以便留作技术总结。

首先,我们在vs2010的软件环境下开发我们的wpf项目,首先我们了解了一下wpf,它是微软基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。wpf可以做出很多2D/3D的很炫酷的界面,可以开发桌面应用程序也可以做浏览器应用程序。在vs2010中可以利用blend 做到界面设计和代码开发的很好分离。可以使有任何一种.Net编程语言(C#,VB NET等开发语言)进行开发。XAML主要针对界面的可视化控件描述,成生进会分析成.cs或.vb文件,并最后将编译为CLR中间运行语言。他对于widows应用程序的开发是一个革命性的改变。对于以后的应用程序的开发至关重要。

我们建立好我们wpf项目,一开始在我们初步设计方案下搭好基本wpf框架,并实现最简单的连接,但是接下来我们遇到第一问题:我们一开始在不知情的情况下,都是做的是windows窗体,做窗体的连接时,我们开始采用NavigationService.Navigate(new Uri("lose.xaml", UriKind.Relative));进行页面跳转,可以怎么也实现不了,最后网上查询才明白,以上跳转是对于page,而对于windows窗体的跳转,只能用窗体的close/hide事件和show事件:lose c1 =new lose();c1.show();this.close();   其实对于wpf有7种xaml文件,窗体windows(它是wpf最基本的界元素),<Window x:Class="WpfBrowserApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
    <Grid>
       
    </Grid>
</Window>page页

<Page x:Class="WpfBrowserApplication1.Page2"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      mc:Ignorable="d"
      d:DesignHeight="300" d:DesignWidth="300"
 Title="Page2">

<Grid>
       
    </Grid>
</Page> 他是是页面型的文件,并不是窗体,一个窗体可以加载多个page页,及我们所有的page可以共用一个windows窗体。只是我们需要将windows页面<Windowx:Class="WpfBrowserApplication1.Window1" </Window>改为<NavigationWindow x:Class="WpfBrowserApplication1.Window1"
</NavigationWindow>;多个page页就可以继承windows;

usercontrol用户控件页面<UserControl x:Class="WpfBrowserApplication1.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d"
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
           
    </Grid>
</UserControl>这是用户控件页面,他是为开发人员提供自定义用户控件的页面,可以直接添加到要使用的windows窗体中

<Window x:Class="WpfApplicationDemo.UserControlDemo"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:my="clr-namespace:WpfApplicationDemo.Control"Title="UserControlDemo" Height="300" Width="300" Loaded="Window_Loaded"><Grid><TextBlock Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="textBlock1" Text="下面是用户控件" VerticalAlignment="Top" /><StackPanel Height="175" HorizontalAlignment="Left" Margin="20,57,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="246" /><my:UserControl1 HorizontalAlignment="Left" Margin="38,46,0,0" x:Name="userControl11" VerticalAlignment="Top" Height="183" Width="406" /></Grid>
</Window>

ResourceDictionary资源字典页面

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
   
</ResourceDictionary>在 Silverlight 中,并非所有类型和对象都适合 ResourceDictionary 用法。 为了在 ResourceDictionary 中定义某个对象并从其中访问该对象,该对象必须成为可共享的对象。 可共享是必须的,因为当在运行时构造并使用应用程序的对象树时,对象不能存在于多个树中的位置。作为资源而使用,资源字典的对象必须受 Silverlight 资源共享行为或诸如对象引用的间接机制的支持。这些机制都需要额外代码的支持。 从 UIElement 类型派生的任何对象在本质上都不是可共享的,除非该对象是从控件模板生成的(Silverlight 控件模板化子系统是间接机制的一个突出示例)。一般支持样式,模板,画笔,颜色,动画类型,转换等。他的使用也很简单,在使用页xaml代码中插入: <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="MyDictionary1.xaml"/>
                <ResourceDictionary Source="MyDictionary2.xaml"/>
                <ResourceDictionary Source="Mydictionary3.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

我们终于解决了页面跳转的问题,由于考虑到我们页面跳转位置不会随机,我们采用的是page页,只是用一个公共的windows进行加载。

转载于:https://www.cnblogs.com/nghygaojun/archive/2013/05/10/3071268.html

wpf首次项目开发技术总结wpf页面相关推荐

  1. vue router 参数_Vue.js项目开发技术解析

    Vue.js项目开发技术解析 一.Vue.js实例 在一个Vue.js工程中,用于显示内容最基层的实例称之为根实例.通过该实例可以进行页面或组件的更新和显示.对于项目本身而言,无论是什么样的页面,都要 ...

  2. DAY10微信小程序项目开发技术总结

    一.每日实习任务 1.网页基础知识(html,css,js) 今天老师为我们介绍讲解了网页基础知识(html,css,js).首先,我们安装了谷歌浏览器及sublime text.老师为我们介绍了ht ...

  3. WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序

    原文:WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序 前面我讲了在win7下使用模拟器,进行调试模拟多点触摸,其实际开发中这样也比较麻烦.. 要拿几个鼠标. 所以更多的人会 买个触摸套 套 ...

  4. Java job interview:项目开发小组组长网站页面设计

    网页设计(web design,又称为Web UI design,WUI design,WUI),是根据企业希望向浏览者传递的信息(包括产品.服务.理念.文化),进行网站功能策划,然后进行的页面设计美 ...

  5. 项目开发技术点、困难点总结——2020-2021年

    一)如何显示和下载二维码? 1.使用第三方组件"vue-qr"进行二维码组件的封装 1)下载引入 npm i vue-qr --save import vueQr from 'vu ...

  6. 高通 Camera HAL3:项目开发技术点总结

    做高通 Camera HAL3开发的一些技术点的总结.整理. 做个记录,方便后续查阅. 1.目录.so.配置文件 productName是项目名 out Target路径:\out\target\pr ...

  7. 一句话概括H5项目开发技术路线

    采用HTML5+CSS3+JavaScript作为主要技术栈,使用了轻量级MVVM框架Vue.js,及其配套的路由管理器vue-router,状态管理器vuex,使用http请求工具axios与后端进 ...

  8. play(三) play实例项目开发Yabe 2前端页面

    1.通过作业加载测试数据: 为了加载测试的数据,我们可以使用下面方法:在application启动时候,加载一个fixture文件.因此,我们创建Bootstrap作业.Play中的作业的概念是:不需 ...

  9. C# WPF MVVM项目实战(进阶②)

    这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发,今天主要是增加了一个用户窗体ImageProcessView,然后通过Treeview切换选择项之后在界面显示不同效果的图片 ...

最新文章

  1. pytorch学习笔记(十二):详解 Module 类
  2. c语言程序设计论文结构,c语言顺序结构设计实验报告.docx
  3. 12款经典图片轮播jquery插件
  4. Redhat Linux 7.2 打开或关闭防火墙
  5. celery 可视化_在Flask中使用Celery进行多任务分布执行
  6. 怎么解决java.lang.NoClassDefFoundError错误
  7. 判断字典中指定key是否存在
  8. php -- 用文本来存储内容,file_put_contents,serialize,unserialize
  9. 没错,继事理图谱后,我们又搞事情了:数地工场自然语言处理语义开放平台正式对外发布!
  10. qtp12版本下载安装破解教程
  11. 关于Spring MVC中文乱码问题的解决方法
  12. File Cabinet Pro for Mac(菜单栏快捷文件管理软件)
  13. _stdcall和_cdecl
  14. 怎么将PDF转换成jpg图片?免费方法了解一下
  15. 智慧工地给工地装上“最强大脑”
  16. rust多行字符串字面量
  17. 树莓派csi摄像头和usb摄像头_一、树莓派CSI摄像头
  18. Effect C++ 学习笔记三:资源管理
  19. 刷脸支付是一个不容错过的商机
  20. 基于javaweb的高校教职工差旅报销管理系统(java+ssm+jsp+html+mysql)

热门文章

  1. mysql中文显示问号
  2. struts2中拦截器和过滤器的比较
  3. 字符集之间转换(UTF-8,UNICODE,Gb2312) c++
  4. MySQL 主外键约束与标准SQL不同的地方
  5. 看似无参却有参-----JS中的函数传参
  6. 数据虚拟化工具已进入IT战略领域
  7. 万达与IBM联手发力公有云市场,为不让马云当首富王健林也是拼了
  8. MATLAB描绘极坐标图像——polar
  9. MONGODB 集群 配置及 客户端PHP 连接
  10. Android 欢迎页面的编写