科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用WPF构建强大的用户体验

用WPF构建强大的用户体验

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

标准的应用程序自然地支持菜单驱动导航,而浏览器应用程序自然地支持超链接导航。但是Windows Presentation Foundation应用程序模型能够让两者混合。

作者:陶刚编译 来源:天极开发 2007年11月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
窗体(Window)

  在Windows Presentation Foundation中,窗体就是Window。通常情况下,在标准的应用程序中,窗体是寄宿内容的核心单位。在Visual Studio 2005中你可以选择"项目 | 添加新项 | WinFX Window"给项目增加一个窗体定义,它会产生下面的内容:

<!--MainWindow.xaml (markup)-->
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="BoxApplication.MainWindow"
</Window>

// MainWindow.xaml.cs (codebehind)
using System.Windows;
public partial class MainWindow : Window { ... }

  在添加窗体定义之后,Visual Studio 2005自动地把标记文件的"构建类型"设置为Page(页面)。在构建的时候,该标记被转换为一种特定的资源类型,可以被统一的资源标识符(URI)唯一地识别出来。从本质上说,这使得Windows Presentation Foundation可以使用URI宣告式地载入一个窗体,你可以使用这种能力来指定一个应用程序启动时自动打开的窗体。要达到这个目的,只需要设置标记中的Application.StartupUri属性,如下所示:

<!--App.xaml (markup)-->
<Application ... StartupUri="MainWindow.xaml" />

  上面的代码建立和显示了一个如图3所示的窗体。与所有其它窗体类似,Windows Presentation Foundation窗体包含客户端区域(它里面放置Windows Presentation Foundation内容和控件)和非客户端区域(边框、标题条、以及一些与此相关的修饰部分)。


图3:窗体和它的各部分

  Application.StartupUri指定的窗体是非模态的,这意味着它不会阻止用户使用应用程序中的其它窗体。如果你需要显示其它的非模态窗体,你只需要调用Window.Show:

// MainWindow.xaml.cs (codebehind)
public partial class MainWindow : Window
{
 void helpContentsMenuItem_Click(object sender, RoutedEventArgs e)
 {
  HelpWindow window = new HelpWindow();
  window.Owner = this; // 确保窗体总是显示在本窗体之上
  window.Show();
 }
 ...
}

  Windows Presentation Foundation也支持显示模式窗体,即阻止用户使用应用程序中其它窗体的窗体。典型情况下(不是一定的),模式窗体一般被当作对话框使用,用来收集完成某项事务(例如创建订单)所需要的数据。在Windows Presentation Foundation中显示模式窗体,需要调用Window.ShowDialog(如下代码所示)。

  代码:调用Window.ShowDialog

// MainWindow.xaml.cs (codebehind)
public partial class MainWindow : Window
{
 void CreateOrder()
 {
  OrderABoxDialog dlg = new OrderABoxDialog();
  dlg.Owner = this; // 确保对话框一直处于本窗体之上
  bool dialogResult = dlg.ShowDialog();

  // 如果订单的细节信息都是争取的,就向订单列表添加订单
  if (dialogResult == true)
  {
   this.orders.Add(dlg.Order);
  }
 }
 ...
}

  Window类也支持典型的对话框行为,允许用户接受或终止一个对话框,并且可以把用户的选择返回给调用代码以供处理。

  消息框是一种特殊的、给用户显示信息或者询问用户的对话框,Windows Presentation Foundation的MessageBox类型支持它:

// MainWindow.xaml.cs (codebehind)
public partial class MainWindow : Window
{
 void aboutMenuItem_Click(object sender, RoutedEventArgs e)
 {
  MessageBox.Show("Box Application, Version 1.0");
 }
 ...
}

  消息框、对话框、窗体和应用程序窗体是标准的、菜单驱动的应用程序开发模型的核心。在很久以前的显示技术中也都支持这些内容。但是,Windows Presentation Foundatio通过对超链接驱动的导航支持扩展了这些内容,它从导航内容的基本单位--页面开始。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章