CleanAOP实战系列--WPF中MVVM自动更新
生活随笔
收集整理的這篇文章主要介紹了
CleanAOP实战系列--WPF中MVVM自动更新
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CleanAOP實戰系列--WPF中MVVM自動更新
作者: 立地 郵箱: jarvin_g@126.com QQ: 511363759CleanAOP介紹:https://github.com/Jarvin-Guan/CleanAOP
前言
講起WPF,開發模式MVVM是必不可少的,使用MVVM模式以后可以在View中寫界面,需要使用到的數據則使用綁定的方式寫到標簽中,那么控制權就放到了ViewModel中,那么有一個需求是每一個使用MVVM者都會有的,就是在后臺改變ViewModel的屬性時,同時使前臺View綁定的標簽內容得到相應更新變動。
定義屬性方式對比
-
傳統方式
private string m_Name = ""; public string Name {set{ if(value!=m_Name){m_Name = value; OnPropertyChanged("Name"); }}get { return m_Name; } } -
使用CleanAOP后
public virtual string Name { set; get; }
對比總結:
使用傳統方式使用了一大堆累贅的代碼,使用CleanAOP后,簡單、方便。
實戰(使用CleanAOP使屬性自動更新)
Notice更新類:
public class Notice : INotifyPropertyChanged, ICommand {#region [ 用于實現綁定的屬性基礎 ] public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string name) {if (PropertyChanged != null){this.PropertyChanged(this, new PropertyChangedEventArgs(name));}} #endregion#region [ 用于實現綁定的命令基礎 ] public bool CanExecute(object parameter) {if (this.CanExecuteFunc != null){return this.CanExecuteFunc(parameter);}return true;} public event EventHandler CanExecuteChanged;public void Execute(object parameter) {if (this.ExecuteAction != null){this.ExecuteAction(parameter);} }public Func<object, bool> CanExecuteFunc { set; get; }public Action<object> ExecuteAction { set; get; } #endregion }定義ViewModel:
[PropertyNotifyIntercept]//添加屬性通知標簽,表示該類接入屬性通知攔截器。 //繼承Notice public class MainWindowVM : Notice {//定義Name屬性public virtual string Name { set; get; } = "jarvin";}界面上綁定該屬性
<TextBox Text="{Binding Name}"></TextBox>設置DataContext
public MainWindow() {InitializeComponent();this.DataContext = InterceptClassFactory.GetInterceptClass<MainWindowVM>(); }修改MainWindowVM的Name的值,這時候界面上會自動做出更新!!
總結
感謝大家使用CleanAOP,使用該方式也可以綁定命令,綁定命令的方式在Demo中會有展示,希望能給大家帶來方便。大家可以下載Demo來調試。
轉載于:https://www.cnblogs.com/Jarvin/p/5031039.html
總結
以上是生活随笔為你收集整理的CleanAOP实战系列--WPF中MVVM自动更新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 函数指针,指针函数,数组指针,指针数组
- 下一篇: sql server转oracle需要注