本文主要是介绍WPF—Frame控件和跳转详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Frame控件和跳转
Frame控件
Frame是一个内容控件,提供导航到和显示内容的功能。 Frame可以托管在其他内容中,就像其他控件和元素一样。
常用属性
- Source 设置该控件显示哪个资源,内容可以是任何类型的.NET Framework对象和 HTML 文件。 但是,一般情况下,页面是打包内容以用于导航 (查看 Page)的首选方式
- Source="http://www.baidu.com" 网络路径
- Source="./MyPage.xaml" 相对路径
- NavigationUIVisibility 设置是否展示导航菜单
常用事件
通过以下事件跟踪导航的生命周期
- Navigating:请求新导航时发生。
- Navigated:找到导航的目标内容且可通过 Content 属性得到这些内容时发生,即使尚未加载完毕也是如此
- NavigationProgress:在下载过程中定期发生,用于提供定位进度信息。
- NavigationFailed:在导航到所需内容的同时遇到错误时发生。
- NavigationStopped:在调用 StopLoading() 方法时发生,或者在当前导航正处于进行过程中时又请求一个新导航时发生。
- LoadCompleted:当已加载、分析并开始呈现目标导航内容时发生。
- FragmentNavigation:在开始导航到内容片段时发生,如果所需片段位于当前内容中,则立即发生;如果所需片段位于不同的内容中,则发生在加载源 XAML 内容之后。
编程式导航
经常会需要在窗体中控制它的跳转,就需要使用编程式导航。代码跳转的方式有两种,一种是直接操作`Frame`的`source`属性,另一种是调用`Frame`的`Navigate`方法。
操作source属性
// UriKind:枚举,表示Uri的格式;RelativeOrAbsolute|Absolute|Relative// 跳转网络路径this.frame.Source = new Uri("https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.frame?view=windowsdesktop-6.0",UriKind.Absolute);this.frame.Source = new Uri("./MyPage.xaml", UriKind.Relative);
调用Navigate跳转
this.frame.Navigate(new Uri("./MyPage.xaml", UriKind.Relative)); // 异步导航到由指定的内容统一资源标识符 (URI)。this.frame.Navigate(new MyPage()); // 异步导航到包含在某个对象的内容。// 3. 使用 Navigate 跳转,携带参数MyPage myPage = new MyPage(StudentName); // 向MyPage传递参数this.frame.Navigate(myPage,"12345"); // 页面跳转传参(我在LoadCompleted事件中接收的)// 绑定Frame的LoadCompleted事件private void Frame_LoadCompleted(object sender, NavigationEventArgs e){Console.WriteLine("当已加载、分析并开始呈现目标导航内容时发生。");object obj = e.ExtraData;if (obj != null){Console.WriteLine(obj.ToString());}}
使用Hyperlink进行跳转,Hypelink控件的NavigateUri属性会自动转换为Uri对象,给控件绑定事件如下即可
Hyperlink hyperlink = (Hyperlink)sender;frame.Navigate(hyperlink.NavigateUri);
这篇关于WPF—Frame控件和跳转详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!