不同视图/视图模型的WPF主菜单
创始人
2025-01-09 17:00:10
0

以下是一个使用不同视图/视图模型的WPF主菜单的解决方案。该解决方案包含两个视图(MainMenuView和ContentView)和两个视图模型(MainMenuViewModel和ContentViewModel)。

首先,创建两个视图MainMenuView和ContentView。MainMenuView包含一个菜单和一个内容区域,ContentView用于显示不同的内容。

MainMenuView.xaml:


    
        
            
            
        

        
            
                
                
            
        

        
    

ContentView.xaml:


    
        
    

然后,创建两个视图模型MainMenuViewModel和ContentViewModel,它们继承自INotifyPropertyChanged接口。

MainMenuViewModel.cs:

using System.ComponentModel;
using System.Windows.Input;

namespace WpfApp
{
    public class MainMenuViewModel : INotifyPropertyChanged
    {
        private ContentViewModel _currentViewModel;

        public ContentViewModel CurrentViewModel
        {
            get { return _currentViewModel; }
            set
            {
                _currentViewModel = value;
                OnPropertyChanged(nameof(CurrentViewModel));
            }
        }

        public ICommand OpenCommand { get; set; }
        public ICommand SaveCommand { get; set; }

        public MainMenuViewModel()
        {
            OpenCommand = new RelayCommand(Open);
            SaveCommand = new RelayCommand(Save);
            CurrentViewModel = new ContentViewModel();
        }

        private void Open(object obj)
        {
            CurrentViewModel = new ContentViewModel();
        }

        private void Save(object obj)
        {
            // Save logic
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

ContentViewModel.cs:

using System.ComponentModel;

namespace WpfApp
{
    public class ContentViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

最后,在App.xaml.cs中设置MainWindow的DataContext为MainMenuViewModel的实例:

using System.Windows;

namespace WpfApp
{
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            MainMenuViewModel viewModel = new MainMenuViewModel();
            MainMenuView view = new MainMenuView();
            view.DataContext = viewModel;
            view.Show();
        }
    }
}

这样,当点击菜单的Open按钮时,将会创建一个新的ContentViewModel实例,并显示在内容区域中。

这是一个基本的示例,你可以根据自己的需求进行扩展和修改。

相关内容

热门资讯

八分钟了解!浙衢麻将跑得快有挂... 八分钟了解!浙衢麻将跑得快有挂吗,微扑克德州专用辅助器游戏平台(详细透视辅助黑科技教程);微扑克德州...
一分钟黑科技!心悦填大坑辅助器... 1、一分钟黑科技!心悦填大坑辅助器免费版,wpk微扑克免费辅助(详细透视辅助插件教程);详细教程。2...
6分钟教程!快玩炸翻天的辅助,... 6分钟教程!快玩炸翻天的辅助,扑克时间软件(详细透视辅助黑科技教程);一、快玩炸翻天的辅助AI软件牌...
九分钟技巧!欢乐贰柒拾辅助软件... 《欢乐贰柒拾辅助软件通用版软件透明挂》是一款多人竞技的欢乐贰柒拾辅助软件通用版辅助透视游戏,你将微扑...
6分钟总结!掌电竞技外 挂,w... 掌电竞技外 挂新手教程相关信息汇总(需添加指定薇757446909获取下载链接);6分钟总结!掌电竞...
6分钟攻略!欢乐达人暗宝挂,n... 《6分钟攻略!欢乐达人暗宝挂,nzt德州辅助软件基本了解(详细透视辅助助手教程)》 欢乐达人暗宝挂软...
6分钟了解!友乐麻将赢牌器,w... 6分钟了解!友乐麻将赢牌器,wepoke科技(详细透视辅助挂教程);(需添加指定薇757446909...
五分钟详情!星悦麻将,wepo... 五分钟详情!星悦麻将,wepoke辅助(详细透视辅助软件教程);支持多人共享记分板与复盘,通过邀请好...
十分钟黑科技!陕麻圈吗,微扑克... 十分钟黑科技!陕麻圈吗,微扑克俱乐部管理(详细透视辅助挂教程);(需添加指定薇757446099获取...
9分钟总结!全民如意棋牌,aa... 9分钟总结!全民如意棋牌,aapoke辅助工具存在(详细透视辅助软件教程);全民如意棋牌最新版本免费...