欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

<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)建第二個(gè)頁面,

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

最后我們?cè)谌萜髦谐休d它們,在WPF中,Page的容器可以是 Window、NavigationWindow、Frame或?yàn)g覽器等,大多數(shù)的時(shí)候用的是Frame和NavigationWindow,因?yàn)樗峁┝艘幌盗袑?dǎo)航相關(guān)的函數(shù),其中Frame更為靈活,這里就以Frame為例來介紹它的用法:

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

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

頁面地址:

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

頁面跳轉(zhuǎn):

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

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

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

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

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

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

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

導(dǎo)航命令:

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

    frame.NavigationService.GoForward();

    frame.NavigationService.GoBack();

    frame.NavigationService.Refresh();

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

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

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

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

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

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

小結(jié):

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

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

相關(guān)文章

  • C#中尾遞歸的使用、優(yōu)化及編譯器優(yōu)化

    C#中尾遞歸的使用、優(yōu)化及編譯器優(yōu)化

    這篇文章主要介紹了C#中尾遞歸的使用、優(yōu)化及編譯器優(yōu)化,本文講解了遞歸運(yùn)用、尾遞歸優(yōu)化、編譯器優(yōu)化等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • c# 修改windows中賬戶的用戶名和密碼

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

    這篇文章主要介紹了c# 改變windows中賬戶的用戶名和密碼,幫助大家更好的理解和學(xué)習(xí)C#,感興趣的朋友可以了解下
    2020-11-11
  • C#加密在實(shí)際中的應(yīng)用

    C#加密在實(shí)際中的應(yīng)用

    在系統(tǒng)的管理員有著實(shí)際的應(yīng)用,對(duì)于一個(gè)數(shù)據(jù)庫管理系統(tǒng)來說,數(shù)據(jù)庫安全還是挺重要的,所以在存入到數(shù)據(jù)庫的密碼通常都是加密的
    2012-11-11
  • C#常用的命名規(guī)則匯總

    C#常用的命名規(guī)則匯總

    這篇文章主要介紹了C#常用的命名規(guī)則,較為詳細(xì)的匯總了包括類、變量、方法、屬性等的命名規(guī)則,具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • C#集合查詢Linq在項(xiàng)目中使用詳解

    C#集合查詢Linq在項(xiàng)目中使用詳解

    本文主要介紹了C#集合查詢Linq在項(xiàng)目中使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C# cefSharep控件的使用詳情

    C# cefSharep控件的使用詳情

    本文主要介紹了C# cefSharep控件的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C# winform實(shí)現(xiàn)登陸次數(shù)限制

    C# winform實(shí)現(xiàn)登陸次數(shù)限制

    這篇文章主要介紹了C# winform實(shí)現(xiàn)登陸次數(shù)限制,相信大家都遇到過網(wǎng)站在用戶多次輸錯(cuò)密碼之后會(huì)自動(dòng)把賬戶凍結(jié)的情況,這種功能如何實(shí)現(xiàn),下面小編為大家分享實(shí)現(xiàn)方法
    2016-05-05
  • Silverlight文件上傳下載實(shí)現(xiàn)方法(下載保存)

    Silverlight文件上傳下載實(shí)現(xiàn)方法(下載保存)

    這篇文章主要介紹了Silverlight文件上傳下載實(shí)現(xiàn)方法(下載保存) ,需要的朋友可以參考下
    2015-11-11
  • 如何使用正則表達(dá)式判斷郵箱(以C#為例)

    如何使用正則表達(dá)式判斷郵箱(以C#為例)

    在C#中可以使用Regex正則表達(dá)式類來校驗(yàn)前臺(tái)提交過來的郵箱字段信息是否符合要求,Regex類是C#中有關(guān)正則表達(dá)式處理的相關(guān)類,功能強(qiáng)大,下面這篇文章主要給大家介紹了關(guān)于如何使用正則表達(dá)式判斷郵箱的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • c#調(diào)用c語言dll需要注意的地方

    c#調(diào)用c語言dll需要注意的地方

    這篇文章主要介紹了c#調(diào)用c語言dll需要注意的地方,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論