笔记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 |
笔记08 WPF导航的更多相关文章
- bootstrap学习笔记之为导航条添加标题、二级菜单及状态 http://www.imooc.com/code/3120
为导航条添加标题.二级菜单及状态 加入导航条标题 在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过" ...
- bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...
- JAVA自学笔记08
JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...
- 《Essential C++》读书笔记 之 目录导航
<Essential C++>读书笔记 之 目录导航 2014-07-06 第一章:<Essential C++>读书笔记 之 C++编程基础 第二章:<Essentia ...
- 机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集
机器学习实战(Machine Learning in Action)学习笔记————08.使用FPgrowth算法来高效发现频繁项集 关键字:FPgrowth.频繁项集.条件FP树.非监督学习作者:米 ...
- CS229 笔记08
CS229 笔记08 Kernel 回顾之前的优化问题 原始问题为: \[ \min_{w,b} \frac{1}{2}||w||^2\\[1.5em] {\text{s.t.}}y^{(i)}\le ...
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[DirectionalBlur] 方位模糊是一个按照指定角度循环位移并叠加纹理,最后平均颜色值并输出的一种特效. ...
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[Embossed] Embossed(浮雕效果) 浮雕效果主要有两个参数:Amount和Wid ...
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[BandedSwirl]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[BandedSwirl] 因工作原因,需要在Silverlight中使用Pixel Shader技术,这对于我来 ...
随机推荐
- Thinkphp5.1源码阅读
主要流程 1 \public\index.php require __DIR__ . '/../thinkphp/start.php'; \thinkphp\start.php require __D ...
- 【Luogu】P2219修筑绿化带(单调队列)
题目链接 这题各种边界判断恶心死人 就是单调队列在每行求出最小的.能装进A*B方块里的花坛 然后再在刚刚求出的那个东西里面跑一遍竖着的单调队列 然后……边界调了一小时 做完这题我深刻地感觉到我又强了 ...
- HDU——1465不容易系列之一(错排公式)
不容易系列之一 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- bzoj 3190 [JLOI2013]赛车 半平面交+细节处理
题目大意 这里有一场赛车比赛正在进行,赛场上一共有N辆车,分别称为g1,g2--gn.赛道是一条无限长的直线.最初,gi位于距离起跑线前进ki的位置.比赛开始后,车辆gi将会以vi单位每秒的恒定速度行 ...
- 标准C程序设计七---44
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- linux 下高精度时间
今天在公司代码中看到了使用select函数的超时功能作定时器的用法,便整理了如下几个Linux下的微秒级别的定时器.在我的Ubutu10.10 双核环境中,编译通过. /* * @FileName: ...
- hdu3947 给一些已知(需费用)路径去覆盖一些边 //预先加灌法费用流
River Problem 题意:一个有向树(河流),只有一个汇点1,每条边只有一个出度.有些河道有污染指数xi,必需要治理,有m段路径,可以去覆盖这些,每被覆盖一次,xi降低响应值. :即 给出一些 ...
- Presto查询引擎简单分析
Hive查询流程分析 各个组件的作用 UI(user interface)(用户接口):提交数据操作的窗口Driver(引擎):负责接收数据操作,实现了会话句柄,并提供基于JDBC / ODBC的ex ...
- netframework中等待多个子线程执行完毕并计算执行时间
本文主要描述在.netframework中(实验环境.netframework版本为4.6.1)提供两种方式等待多个子线程执行完毕. ManualResetEvent 在多线程中,将ManualRes ...
- 第一章spring boot简介
接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手, ...