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

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

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

前言

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

一、準(zhǔn)備工作

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

在這里插入圖片描述

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

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

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

利用Frame的Source 屬性加載內(nèi)部的控件,使用Frame的時候,用于切換的頁面可以是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。
首先將紅色和綠色兩個界面修改為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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

海晏县| 白玉县| 南澳县| 香港| 吴旗县| 祁连县| 尼玛县| 南昌市| 盐源县| 仙桃市| 南康市| 文水县| 石景山区| 吕梁市| 大埔区| 桐梓县| 醴陵市| 黄浦区| 环江| 华坪县| 石嘴山市| 昌宁县| 桦南县| 银川市| 三台县| 阜南县| 九龙城区| 济阳县| 大埔区| 高密市| 漾濞| 郴州市| 长子县| 京山县| 印江| 铜鼓县| 罗平县| 阳信县| 三都| 宿松县| 沙坪坝区|