技术开发 频道

如何让WPF与你的架构相适合?(1)


WPF/e

   WPF/e是一种派生技术,它将扩大WPF的使用范围,允许你在WPF的基础上建立应用程序。这些应用程序既能在浏览器内运行,也可以被更广范围的客户(包括其他平台)运行。WPF/e不会在.NET 3.0内和WPF一起发行,但不久后将面世,很可能在2007年。 WPF/e在浏览器内使用一个ActiveX控件或其他形式的自动安装的宿主组件。此组件在没有依赖宿主浏览器的物体模块或特殊的脚本性能情况下,也能在浏览器内运行WPF内容和控件。一个简单的比喻就是把WPF/e看成和在浏览器内运行的和Macromedia Flash或Apple QuickTime相似的技术,其呈现的内容比浏览器本身呈现得更丰富。就WPF/e来说,将被提交的内容将是WPF应用程序。WPF/e支持的功能是WPF API全部性能的子集,而且也不是最终决定下来的。但是我期望这些性能与我前面谈到得XAML浏览器应用程序的性能相似——你可以处理丰富的图形,音频,还可以呼叫回到原始网址(可能在宿主网页内使用AJAX技术),但是与访问其他资源无关。然而,拥有一个好的从宿主站点显示服务的分布式结构能让你使用WPF/e实现许多功能。请关注更多即将发布的与WPF/e有关的信息。

开发WPF应用程序


   根据应用程序要做的任务来开发WPF的应用程序,可以选择纯代码方法,XAML代码方法或者两者的结合方法。后者将是最通用的,因为采用这样方法,你可以从这个设计工具中得到最大的利益,可维护性,灵活性,而且使你的代码更有表达力。基本上,你在WPF中所作的一切仅仅是针对WPF .NET类库中类型的代码,因而代码整个范围的功能性对你是可用的。使用XAML操作接口让你把可以更公开表达的对象设置在一种形式中,这种形式更方便于设计工具和设计者操作和定义。
一个WPF应用程序由一个层次的元素构成。最高等级的基本编程模式和Windows Forms并非很不相同。你创建一个应用程序类别的实例,从Windows类别(或一个派生类别)创建一个最高等级的窗口,并运行这个程序。和VB Windows Forms应用程序一样,如果你没有明确地创建一个你自己的进入点,这个进入点(主方法)将自动产生。
例如,在下面图2中的两个XAML文件公开创建了一个应用程序类实例和一个窗口类实例。这个窗口有它的第一个子要素作为网格。在WPF中,这个网格控件就像一个HTML表格或使Windows Forms2.0中的表格设计面板。它仅能提供给你一个矩形网格容器,你能够把其他元素放置在里面用于设计。在网格之内,XAML定义了两行两列,然后使用附加属性放置两个文字块控件和两个文本框控件在这个网格单元中。
// App.xaml
<Application x:Class="SimpleWPFApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml"/>

// Window1.xaml
<Window x:Class="SimpleWPFApp.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title=" SimpleWPFApp" Height="100" Width="270">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0">Name:</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0">Phone:</TextBlock>
<TextBox Grid.Row="0" Grid.Column="1" Width="150"/>
<TextBox Grid.Row="1" Grid.Column="1" Width="150"/>
</Grid>
</Window>
0
相关文章