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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值