在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → wpf MVVM设计案例(入门级源码)

wpf MVVM设计案例(入门级源码)

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.07M
  • 下载次数:68
  • 浏览次数:503
  • 发布时间:2017-04-18
  • 实例类别:C#语言基础
  • 发 布 人:雨豪
  • 文件格式:.rar
  • 所需积分:0
 相关标签: C#语言基础 MVVM设计模式

同类人气实例

实例介绍

【实例简介】
【实例截图】

【核心代码】

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

namespace WPFBindingMVVM
{
    public class MainViewModel : ViewModelBase
    {

        private string _text1;
        public string Text1
        {
            get { return _text1; }
            set
            {
                if (_text1 != value)
                {
                    _text1 = value;
                    RaisePropertyChanged("Text1");
                }
            }
        }

       

        private ICommand _okCommand;
        public ICommand OkCommand
        {
            get
            {
                if (_okCommand == null)
                    _okCommand = new RelayCommand(call => OnOk());
                  return _okCommand;
            }
        }
        private void OnOk()
        {
            MessageBox.Show(Text1);
        }
    }
}


using System;
using System.Windows.Input;

namespace WPFBindingMVVM
{
    public class RelayCommand : ICommand
    {
        #region 属性
        private readonly Action<object> ExecuteAction;
        private readonly Predicate<object> CanExecuteAction;
        #endregion 

        public RelayCommand(Action<object> execute)
            : this(execute, _ => true)
        {
        }
        public RelayCommand(Action<object> action, Predicate<object> canExecute)
        {
            ExecuteAction = action;
            CanExecuteAction = canExecute;
        }


        #region   实现接口
        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested = value; }
            remove { CommandManager.RequerySuggested -= value; }
        }

        public bool CanExecute(object parameter)
        {
            return CanExecuteAction(parameter);
        }

        public void Execute(object parameter)
        {
            ExecuteAction(parameter);
        }
        #endregion

    }
}



using System;
using System.ComponentModel;

namespace WPFBindingMVVM
{
    public class ViewModelBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public void RaisePropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {

                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));


            }
        }
    }
}


UI层:


<Window x:Class="WPFBindingMVVM.MainWindow"
        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:WPFBindingMVVM"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Window.DataContext>
        <local:MainViewModel/>
    </Window.DataContext>
    <Grid>
        <TextBox  HorizontalAlignment="Left"  Height="23" Margin="175,133,0,0" TextWrapping="Wrap" Text="{Binding Text1,Mode=TwoWay}" VerticalAlignment="Top" Width="162"/>
        <Button  Content="Button" Command="{Binding OkCommand}" HorizontalAlignment="Left" Margin="217,185,0,0" VerticalAlignment="Top" Width="75"/>
    </Grid>
</Window>


这种MVVM设计模式可以让UI层代码与后台代码,实现完全解耦,在开发中以便程序员更好的维护代码的运行。


(逻辑代码完全去掉,前端代码不会报错)

实例下载地址

wpf MVVM设计案例(入门级源码)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警