如何在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

笔记08 WPF导航的更多相关文章

  1. bootstrap学习笔记之为导航条添加标题、二级菜单及状态 http://www.imooc.com/code/3120

    为导航条添加标题.二级菜单及状态 加入导航条标题 在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过" ...

  2. bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111

    基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...

  3. JAVA自学笔记08

    JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...

  4. 《Essential C++》读书笔记 之 目录导航

    <Essential C++>读书笔记 之 目录导航 2014-07-06 第一章:<Essential C++>读书笔记 之 C++编程基础 第二章:<Essentia ...

  5. 机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集

    机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集 关键字:FPgrowth.频繁项集.条件FP树.非监督学习作者:米 ...

  6. CS229 笔记08

    CS229 笔记08 Kernel 回顾之前的优化问题 原始问题为: \[ \min_{w,b} \frac{1}{2}||w||^2\\[1.5em] {\text{s.t.}}y^{(i)}\le ...

  7. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]

    原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[DirectionalBlur] 方位模糊是一个按照指定角度循环位移并叠加纹理,最后平均颜色值并输出的一种特效. ...

  8. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]

    原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[Embossed] Embossed(浮雕效果)          浮雕效果主要有两个参数:Amount和Wid ...

  9. 【HLSL学习笔记】WPF Shader Effect Library算法解读之[BandedSwirl]

    原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[BandedSwirl] 因工作原因,需要在Silverlight中使用Pixel Shader技术,这对于我来 ...

随机推荐

  1. Spring c3p0连接池配置

    数据库连接池 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接 ...

  2. 解决11g r2,12c使用wm_concat报错问题

    创建type CREATE OR REPLACE TYPE zh_concat_im AUTHID CURRENT_USER AS OBJECT ( CURR_STR ), STATIC FUNCTI ...

  3. [Err] 1022 - Can't write; duplicate key in table '#sql-1500_26'

        今天用powerdesigner修改了一些外键关系,有两个外键的名字取一样的,忘记改了.然后在用navicat运行sql文件时,报出[Err] 1022 - Can't write; dupl ...

  4. 【bzoj1014】[JSOI2008]火星人prefix Splay+Hash+二分

    题目描述 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 8 9 10 ...

  5. 【bzoj1925】[Sdoi2010]地精部落 组合数学+dp

    题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到 ...

  6. 【Luogu】U16325小奇的花园(树链剖分)

    题目链接 学了学动态开点的树链剖分,其实跟动态开点的线段树差不多啦 查询的时候别ssbb地动态开点,如果没这个点果断返回0就行 只要注意花的种类能到intmax就行qwq!!!! #include&l ...

  7. 树状数组--前n项和;

    树状数组是和线段树类似的数据结构,基本上树状数组可以做的线段树都可以做: 树状数组就是一个数组,在信息记录上有一些特点,以动态求前n项和为例:可以改变数组的某一个元素,求前n项和: 数组tree[ i ...

  8. ECharts学习总结(二)-----图表组件漏斗图(funnel)

    今天在学习ECharts时,想要在ECharts图表的原生态Demo中抠出漏斗图,却不知如何下手,经过一番研究,特总结如下: 首先我们需要这样做 1.拷贝出两个js文件:esl.js 和echarts ...

  9. 树上的路径 BZOJ 3784

    树上的路径 [问题描述] 给定一个N个结点的树,结点用正整数1..N编号.每条边有一个正整数权值.用d(a,b)表示从结点a到结点b路边上经过边的权值.其中要求a<b.将这n*(n-1)/2个距 ...

  10. python 操作系统和进程

    一. 操作系统介绍 多道程序系统 多道程序设计技术       所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行.即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种 ...