• wpf首次项目开发技术总结wpf页面


       对于初次面对这么一个曾未接触的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进行加载。

      

  • 相关阅读:
    图论基础
    降维和聚类系列(二):拉普拉斯特征映射Laplacian Eigenmaps,谱聚类,实例代码
    降维和聚类系列(一):方法综述和比较(持续更新中)
    markdown设置图片尺寸
    指示向量indicator vector
    Sherlock and his girlfriend CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    数组分块入门 3
    数组分块入门 3
  • 原文地址:https://www.cnblogs.com/nghygaojun/p/3071268.html
Copyright © 2020-2023  润新知