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

WPF實(shí)現(xiàn)頁面的切換的示例代碼

 更新時(shí)間:2023年01月30日 11:05:14   作者:鯉籽鯤  
本文主要介紹了WPF實(shí)現(xiàn)頁面的切換的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文主要講述如何在同一個(gè)窗體內(nèi),實(shí)現(xiàn)不同功能模塊的頁面切換。

一、準(zhǔn)備工作

1.搭建一個(gè)簡(jiǎn)單的mvvm項(xiàng)目結(jié)構(gòu)

在這里插入圖片描述

首先搭建一個(gè)簡(jiǎn)單的項(xiàng)目框架,然后有紅和綠兩個(gè)頁面,ViewModels中的Base 中簡(jiǎn)單實(shí)現(xiàn)了ICommand 和 INotifyPropertyChanged接口

二、實(shí)現(xiàn)

1.使用Frame控件的方式實(shí)現(xiàn)

利用Frame的Source 屬性加載內(nèi)部的控件,使用Frame的時(shí)候,用于切換的頁面可以是UserControl 或者Page,如案例中使用的就是Page

實(shí)現(xiàn)代碼如下:

<Window x:Class="WpfApp2.Views.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2.Views"
        xmlns:vm="clr-namespace:WpfApp2.ViewModels"
        mc:Ignorable="d"
        Title="MainView" Height="450" Width="800">
    <Window.DataContext>
        <vm:MainViewModel></vm:MainViewModel>
    </Window.DataContext>
    <DockPanel Grid.Column="0">
        <StackPanel Background="LightBlue">
            <RadioButton Command="{Binding ChangePageCommand}" CommandParameter="PageRedView.xaml" Content="紅色" Margin="10"></RadioButton>
            <RadioButton Command="{Binding ChangePageCommand}" CommandParameter="PageGreenView.xaml" Content="綠色" Margin="10"></RadioButton>
        </StackPanel>
        <Frame NavigationUIVisibility="Hidden" Source="{Binding PageName}"/>
    </DockPanel>
</Window>


注意:這里的CommandParameter傳入的是PageRedView.xaml文件

    public class MainViewModel:ViewModelBase
    {
        private string _pageName;

        public string PageName
        {
            get { return _pageName; }
            set { _pageName = value; OnPropertyChanged(); }
        }

        public ICommand ChangePageCommand { get; set; }

        public MainViewModel()
        {
            ChangePageCommand = new CommandBase(ChangePage);
        }

        private void ChangePage(object obj)
        {
            PageName = obj.ToString();
        }
    }

2.使用反射的方式實(shí)現(xiàn)

使用反射+ContentControl 的方式也可使用頁面切換,不過該方式下ContentControl 的Content不可以承接Page,Page只有Frame 和Window可以承接,但是可以承接UserControl。
首先將紅色和綠色兩個(gè)界面修改為UserControl并命名為UserControlRed和UserControlGreen ,然后修改代碼如下:

    <DockPanel Grid.Column="0">
        <StackPanel Background="LightBlue">
            <RadioButton Command="{Binding ChangePageCommand}" CommandParameter="UserControlRed" Content="紅色" Margin="10"></RadioButton>
            <RadioButton Command="{Binding ChangePageCommand}" CommandParameter="UserControlGreen" Content="綠色" Margin="10"></RadioButton>
        </StackPanel>
        <ContentControl Content="{Binding MainContent}"/>
    </DockPanel>
  public class MainViewModel:ViewModelBase
    {
        private FrameworkElement mainContent;

        public FrameworkElement MainContent
        {
            get { return mainContent; }
            set { mainContent = value; OnPropertyChanged(); }
        }


        public ICommand ChangePageCommand { get; set; }

        public MainViewModel()
        {
            ChangePageCommand = new CommandBase(ChangePage);
        }

        private void ChangePage(object obj)
        {
        	//【 * 】這里需要拼接路徑
            Type type = Type.GetType("WpfApp2.Views." + obj.ToString());
            MainContent = (FrameworkElement)System.Activator.CreateInstance(type);
        }
    }

3.實(shí)現(xiàn)效果

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于WPF實(shí)現(xiàn)頁面的切換的示例代碼的文章就介紹到這了,更多相關(guān)WPF 頁面切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# .NET 中的緩存實(shí)現(xiàn)詳情

    C# .NET 中的緩存實(shí)現(xiàn)詳情

    軟件開發(fā)中最常用的模式之一是 緩存 ,其包括進(jìn)程內(nèi)緩存、持久性進(jìn)程內(nèi)緩存和分布式緩存,本文我們將主要介紹進(jìn)程內(nèi)緩存,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • C#數(shù)據(jù)結(jié)構(gòu)之雙向鏈表(DbLinkList)實(shí)例詳解

    C#數(shù)據(jù)結(jié)構(gòu)之雙向鏈表(DbLinkList)實(shí)例詳解

    這篇文章主要介紹了C#數(shù)據(jù)結(jié)構(gòu)之雙向鏈表(DbLinkList),結(jié)合實(shí)例形式較為詳細(xì)的講解了雙向鏈表的概念及C#實(shí)現(xiàn)雙向鏈表的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • C#控制臺(tái)實(shí)現(xiàn)飛行棋游戲

    C#控制臺(tái)實(shí)現(xiàn)飛行棋游戲

    這篇文章主要為大家詳細(xì)介紹了C#控制臺(tái)實(shí)現(xiàn)飛行棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C#獲取上個(gè)月第一天和最后一天日期的方法

    C#獲取上個(gè)月第一天和最后一天日期的方法

    這篇文章主要介紹了C#獲取上個(gè)月第一天和最后一天日期的方法,是關(guān)于C#日期函數(shù)的簡(jiǎn)單應(yīng)用,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • C# memcache 使用介紹

    C# memcache 使用介紹

    這篇文章主要介紹了C# memcache 使用介紹,需要的朋友可以參考下
    2015-05-05
  • C#使用OpenCV剪切圖像中的圓形和矩形的示例代碼

    C#使用OpenCV剪切圖像中的圓形和矩形的示例代碼

    這篇文章主要介紹了C#使用OpenCV剪切圖像中的圓形和矩形,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • C#發(fā)送內(nèi)置圖片html格式郵件的方法

    C#發(fā)送內(nèi)置圖片html格式郵件的方法

    這篇文章主要介紹了C#發(fā)送內(nèi)置圖片html格式郵件的方法,涉及C#發(fā)送郵件的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#中的out關(guān)鍵字用法詳解

    C#中的out關(guān)鍵字用法詳解

    在 C# 中,out 關(guān)鍵字是一個(gè)修飾符,它允許你在方法內(nèi)部創(chuàng)建一個(gè)臨時(shí)的變量,用于接收傳遞進(jìn)來的參數(shù)值,并在方法執(zhí)行完畢后,將該變量的值返回給調(diào)用方法的對(duì)象,本文將給大家詳細(xì)介紹一下C#中的out關(guān)鍵字用法,需要的朋友可以參考下
    2024-02-02
  • C#實(shí)現(xiàn)的陰歷陽歷互相轉(zhuǎn)化類實(shí)例

    C#實(shí)現(xiàn)的陰歷陽歷互相轉(zhuǎn)化類實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)的陰歷陽歷互相轉(zhuǎn)化類,結(jié)合實(shí)例形式分析了C#針對(duì)日期的轉(zhuǎn)換與計(jì)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    這篇文章主要介紹了C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法,結(jié)合實(shí)例形式分析了C#瀏覽器事件響應(yīng)及文件操作相關(guān)技巧,需要的朋友可以參考下
    2017-05-05

最新評(píng)論