您的位置:首页 > 其它

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

2013-05-10 15:20 525 查看
对于初次面对这么一个曾未接触的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进行加载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: