zoukankan      html  css  js  c++  java
  • 笔记08 WPF导航

    如何在winform中做导航,如何重定向界面,就产生了争执。

    是用window还是Page还是UserControl?

    先不管用啥。我们先比较一下各自的优缺点。

    在WPF中使用导航,内容被组织在Page元素中,Page能寄宿在NavigationWindow或者Frame。

      这些容器能提供一种从页到页的导航,一本记录所有导航的日志,及一系列导航相关事件。

    下面说说区别:

    Window 对象正是这听起来像:为您的应用程序创建了一个新的 窗口。 你应该使用它当你想要弹出一个全新的窗口。基于用户操作的改变, 我经常使用不止一个 窗口弹出啥的。因为我喜欢将动态内容在主窗口。

    Page 是一个页面在窗口。 它主要是用于基于web的系统像一个XBAP,你有一个单独的浏览器窗口,窗口可以驻留在不同的页面。 它也可以用于 导航应用程序 ,她包含了一个frame,就跟iframe似地 。

    一个 UserControl 是一个可重用的用户创建的控制,您可以添加到您的UI以同样的方式你会添加任何其他控制。一下情况我会用用户控件。

    1、 当我想要建立在一些自定义功能(例如,一个 CalendarControl)

    2、当我有大量相关的XAML代码,如 视图当使用MVVM设计模式。 

    当导航窗口之间,您可以简单地创建一个新的 窗口对象和显示它

    var NewWindow = new MyWindow();
    newWindow.Show();

    但就像我说的这个答案的开始,我宁愿不来管理多个窗口,如果可能的话。

    我的导航的首选方法是创建一些动态内容区域使用 ContentControl,和填充的 用户控件包含任何当前视图。

    <Window x:Class="MyNamespace.MainWindow" ...>
       <DockPanel>
           <ContentControl x:Name="ContentArea" />
       </DockPanel>
    </Window>

    和在你的导航事件你可以简单使用

    ContentArea.Content = new MyUserControl();

    但是如果你使用WPF,我强烈推荐MVVM设计模式。 MVVM模式不大懂

    最后我们选择使用Page做导航。

    页面间导航。

    1
    2
    3
    4
       //Page1.xaml导航到Page2.xaml 
      Page2 p2 = new Page2(); 
      NavigationService.Navigate(p2); 
      //NavigationService.Navigate(new Uri("Page2.xaml", UriKind.Relative));

    这个可以传递Page的参数的。

    1
    2
    3
    4
    5
    6
    7
    8
     //实例化要导航到的页面 
      Page2 p2 = new Page2("来自Page1.xaml的参数"); 
      //Page1.xaml导航到Page2.xaml 
      NavigationService.Navigate(p2); 
      //定义含参数构函,可用于接收其他页面传递信息 
      public Page2(string value):this() 
      { 
      Label1.Content = value
  • 相关阅读:
    React全家桶+AntD 共享单车后台管理系统开发
    eclipse中通过Properties Editor插件查看配置文件中Unicode内容
    修改eclipse的编码格式
    后端接收前端数据中文乱码解决方案
    MySQL基础
    wordpress个人常用标签调用
    4gl游标cursor
    尝试写一写4gl与4fd
    foreach循環體控制
    保护wordpress后台登录地址
  • 原文地址:https://www.cnblogs.com/newcoder/p/4831946.html
Copyright © 2011-2022 走看看