最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF中的導(dǎo)航框架概述

 更新時間:2022年06月24日 16:58:40   作者:小旭2021  
這篇文章介紹了WPF中的導(dǎo)航框架,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

有的時候,我們需要一個支持頁面跳轉(zhuǎn)的UI,例如文件瀏覽器,開始向?qū)У?。對于這樣的界面,簡單的可以使用ContentControl + ContentTemplateSelector的方式來實現(xiàn),但是有的時候我們會需要一些更加高級的跳轉(zhuǎn)功能,如前進,回退等。這個時候,用這個方式就稍微有點力不從心了,此時,我們可以使用WPF的導(dǎo)航框架幫助我們快速實現(xiàn)這一功能。

WPF 的Page框架主要包括兩個部分,容器和頁面,

下面就以一個簡單的例子來介紹WPF的Page框架,首先我們創(chuàng)建第一個頁面:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      Title="Page1">
    <TextBlock>
        <Run>### This is Page 1, Let's go to</Run>
        <Hyperlink NavigateUri="Page2.xaml" >Page2</Hyperlink>
    </TextBlock>
</Page>

然后再創(chuàng)建第二個頁面,

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      Title="Page2">
    <TextBlock>
        <Run>~~~ This is Page 2, Let's go to</Run>
        <Hyperlink Command="BrowseBack" >Page1</Hyperlink>
    </TextBlock>
</Page>

最后我們在容器中承載它們,在WPF中,Page的容器可以是 WindowNavigationWindow、Frame或瀏覽器等,大多數(shù)的時候用的是Frame和NavigationWindow,因為它提供了一系列導(dǎo)航相關(guān)的函數(shù),其中Frame更為靈活,這里就以Frame為例來介紹它的用法:

<Grid>
    <Frame x:Name="frame" Source="Page1.xaml"  NavigationUIVisibility="Visible" />
</Grid>

運行上述代碼后,會得到在如下兩個頁面間跳轉(zhuǎn)的導(dǎo)航窗口。點擊Page1的鏈接可以跳轉(zhuǎn)到Page2, 點擊Page2的鏈接可以回退到Page1

頁面地址:

在WPF的導(dǎo)航框架中,頁面地址都是用URI來表示的,并不需要手動創(chuàng)建Page對象(也是可以手動創(chuàng)建的),例如Frame中設(shè)置的Source="Page1.xaml",它將起始頁面的URI設(shè)置為Page.xaml,系統(tǒng)會自動創(chuàng)建Page1對象。

頁面跳轉(zhuǎn):

頁面跳轉(zhuǎn)是通過NavigationService來控制的,在Frame和Page中都有該名為NavigationService的對象,可以通過它的Navigate函數(shù)來實現(xiàn)頁面跳轉(zhuǎn)。例如前面在Frame中設(shè)置Source="Page1.xaml"實際上就是通過如下函數(shù)實現(xiàn)的跳轉(zhuǎn):

frame.NavigationService.Navigate(new Uri("Page1.xaml", UriKind.Relative));

這個函數(shù)并不僅僅局限于URI,跳轉(zhuǎn)對象也不僅僅局限于URI,如下方式也都是可以的。

    frame.NavigationService.Navigate(new Page1());

    frame.NavigationService.Navigate(new Button());

    frame.NavigationService.Navigate("Hello world");

另外,我們也可以像Page1.xaml種那樣通過Hyperlink的NavigateUri屬性來在Page的Xaml中實現(xiàn)頁面跳轉(zhuǎn),當(dāng)然,其本質(zhì)也是調(diào)用NavigationService.Navigate來實現(xiàn)的。

導(dǎo)航命令:

除了頁面跳轉(zhuǎn)外,NavigationService還提供了一些基本的導(dǎo)航命令,如前進,回退,刷新??梢酝ㄟ^

    frame.NavigationService.GoForward();

    frame.NavigationService.GoBack();

    frame.NavigationService.Refresh();

另外,WPF本身提供了一個標(biāo)準(zhǔn)的導(dǎo)航命令的集合NavigationCommands(比NavigationService),Page和Frame也支持這幾個命令的綁定(NavigationCommands的命令是比NavigationService能支持的要多的),因此我們可以使用命令行綁定非常方便的調(diào)用這些功能。如Page2種所使用的回退命令:

<Hyperlink Command="BrowseBack" >Page1</Hyperlink>

 最后,簡單的介紹一個沒有什么技術(shù)含量,但很常用的功能,那就是Frame對象的導(dǎo)航工具條的重繪。 Frame對象本身是帶著一個導(dǎo)航工具條的,提供了一個類似IE的前進后退功能。將NavigationUIVisibility設(shè)置為Visible或Auto的時候可見。

但這個工具條過于簡陋,調(diào)試一下還可以,在最終交付的時候要么隱藏它,要么重寫它,重寫的方式一般就是改寫其Template,如下就是一個簡單的例子:

<ControlTemplate TargetType="Frame">
    <DockPanel Margin="8">
        <StackPanel Margin="4" DockPanel.Dock="Top" Orientation="Horizontal">
            <Button Content="Go back" Margin="4"  Command="{x:Static NavigationCommands.BrowseBack}" />
            <Button Content="Go Forward" Margin="4"  Command="{x:Static NavigationCommands.BrowseForward}" />
        </StackPanel>
        <Border BorderBrush="Orange"  Margin="7"  BorderThickness="4"  Padding="7"
                CornerRadius="7" Background="White">
            <ContentPresenter />
        </Border>
    </DockPanel>
</ControlTemplate>

但這個常常用到,以便后續(xù)參考。

小結(jié):

本文主要介紹了WPF的導(dǎo)航框架的基本用法,更多的功能后面再寫文章陸續(xù)介紹?;蛘邊⒖次④浌俜降腗SDN:導(dǎo)航概述

到此這篇關(guān)于WPF導(dǎo)航框架的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • gridview的buttonfield獲取該行的索引值(實例講解)

    gridview的buttonfield獲取該行的索引值(實例講解)

    本篇文章主要介紹了gridview的buttonfield獲取該行的索引值(實例講解)需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • Unity Shader實現(xiàn)徑向模糊效果

    Unity Shader實現(xiàn)徑向模糊效果

    這篇文章主要為大家詳細介紹了Unity Shader實現(xiàn)徑向模糊效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C#中一個高性能異步socket封裝庫的實現(xiàn)思路分享

    C#中一個高性能異步socket封裝庫的實現(xiàn)思路分享

    下面小編就為大家分享一篇C#中一個高性能異步socket封裝庫的實現(xiàn)思路,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • C# WCF簡單入門圖文教程(VS2010版)

    C# WCF簡單入門圖文教程(VS2010版)

    這篇文章主要介紹了WCF簡單入門圖文教程,版本是VS2010版,幫助大家輕松學(xué)習(xí)了解DataContract、ServiceContract等特性,感興趣的小伙伴們可以參考一下
    2016-03-03
  • c# 實現(xiàn)語音合成

    c# 實現(xiàn)語音合成

    這篇文章主要介紹了c# 實現(xiàn)語音合成的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • Unity3D中腳本的執(zhí)行順序和編譯順序

    Unity3D中腳本的執(zhí)行順序和編譯順序

    在Unity中可以同時創(chuàng)建很多腳本,并且可以分別綁定到不同的游戲?qū)ο笊希鼈兏髯远荚谧约旱纳芷谥羞\行。與腳本有關(guān)的也就是編譯和執(zhí)行啦,本文就來研究一下Unity中腳本的編譯和執(zhí)行順序的問題。
    2014-11-11
  • c#批量整理xml格式示例

    c#批量整理xml格式示例

    這篇文章主要介紹了c#批量整理xml格式示例,win7的x64和x86系統(tǒng)下已驗證通過,需要的朋友可以參考下
    2014-03-03
  • c# 修改windows中賬戶的用戶名和密碼

    c# 修改windows中賬戶的用戶名和密碼

    這篇文章主要介紹了c# 改變windows中賬戶的用戶名和密碼,幫助大家更好的理解和學(xué)習(xí)C#,感興趣的朋友可以了解下
    2020-11-11
  • WPF實現(xiàn)圖片按像素拉伸

    WPF實現(xiàn)圖片按像素拉伸

    這篇文章主要為大家詳細介紹了WPF實現(xiàn)圖片按像素拉伸的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • C#實現(xiàn)路由器斷開連接,更改公網(wǎng)ip的實例代碼

    C#實現(xiàn)路由器斷開連接,更改公網(wǎng)ip的實例代碼

    C#實現(xiàn)路由器斷開連接,更改公網(wǎng)ip的實例代碼,需要的朋友可以參考一下
    2013-05-05

最新評論

黔南| 元阳县| 温州市| 石泉县| 和田市| 阿合奇县| 政和县| 蓬莱市| 蒲江县| 上饶县| 宝兴县| 宁国市| 沾益县| 桐乡市| 达尔| 江川县| 罗田县| 通河县| 新营市| 新建县| 喀什市| 泰顺县| 曲靖市| 调兵山市| 潞西市| 古交市| 安阳市| 西安市| 凉山| 邓州市| 读书| 望江县| 牟定县| 滦南县| 浮山县| 许昌县| 东方市| 旺苍县| 贵德县| 翼城县| 达拉特旗|