c# – 编写MVVM样板代码的更好方法?
发布时间:2020-12-15 07:54:02 所属栏目:百科 来源:网络整理
导读:我发现自己最近编写了大量的样板MVVM代码,并想知道是否有一种奇特的方式可以解决所有问题?我已经使用了实现INotifyPropertyChanged的ViewModelBase类,但这并没有解决必须编写所有访问器代码等问题.也许是通过编写一个自定义属性来执行此操作,还是通过模板系
我发现自己最近编写了大量的样板MVVM代码,并想知道是否有一种奇特的方式可以解决所有问题?我已经使用了实现INotifyPropertyChanged的ViewModelBase类,但这并没有解决必须编写所有访问器代码等问题.也许是通过编写一个自定义属性来执行此操作,还是通过模板系统?
public MyClass : ViewModelBase { private int someVariable; public int SomeVariable { get { return this.someVariable; } set { this.someVariable = value; this.NotifyPropertyChanged("SomeVariable"); } } } 解决方法
我有一个片段,用于创建我的视图模型属性.该特定片段使用表达式< Func< T>>其他评论者暗示的符号.
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> <Title>View Model Property</Title> <Description> Declares a property and member suitable for Viewmodel implementation. </Description> <HelpUrl> </HelpUrl> <Shortcut>propvm</Shortcut> </Header> <Snippet> <Declarations> <Literal Editable="true"> <ID>propname</ID> <ToolTip>Property Name</ToolTip> <Default>Name</Default> <Function> </Function> </Literal> <Literal Editable="true"> <ID>type</ID> <ToolTip>Property type.</ToolTip> <Default>Type</Default> <Function> </Function> </Literal> <Literal Editable="true"> <ID>init</ID> <ToolTip>Member initialisation</ToolTip> <Default>null</Default> <Function> </Function> </Literal> </Declarations> <Code Language="csharp" Kind="type decl"><![CDATA[public $type$$propname$ { get { return m_$propname$; } set { m_$propname$= value; base.OnPropertyChanged(() => $propname$); } } $type$m_$propname$= default($type$);$end$]]></Code> </Snippet> </CodeSnippet> </CodeSnippets> 请注意对base.PropertyChanged()的调用.我有一个ViewModelBase类来为我做繁重的属性通知和验证. 用法是这样的: >输入propvm Walkthrough : Creating a code snippet (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |