C# WP 8.1 ViewModel处理属性
我正在使用ViewModels编写一个WP 8.1应用程序。几乎所有这些ViewModel都有一个处理属性,如果发生了某些事情(例如加载/更新数据),该属性将得到更新。我把它绑在一个处理环上。我的问题是,这个变量被设置并引用viewmodel中的所有地方,这使得它变得混乱。有没有更优雅的方法?下面是一个例子 公共类CustomViewModel { 公共布尔处理{get;set;} 公共空荷载 { 处理=真; //加载数据的逻辑 处理=假; } 公共作废保存 { 处理=真; //保存数据的逻辑 处理=假; } }C# WP 8.1 ViewModel处理属性,c#,viewmodel,win-universal-app,C#,Viewmodel,Win Universal App,我正在使用ViewModels编写一个WP 8.1应用程序。几乎所有这些ViewModel都有一个处理属性,如果发生了某些事情(例如加载/更新数据),该属性将得到更新。我把它绑在一个处理环上。我的问题是,这个变量被设置并引用viewmodel中的所有地方,这使得它变得混乱。有没有更优雅的方法?下面是一个例子 公共类CustomViewModel { 公共布尔处理{get;set;} 公共空荷载 { 处理=真; //加载数据的逻辑 处理=假; } 公共作废保存 { 处理=真; //保存数据的逻辑
假设所有处理方法都没有返回值,一种可能的方法是创建一个接受参数的方法。此方法负责设置Processing属性并调用作为方法参数传递的操作:
public bool Processing { get; set; }
private void Process(Action process)
{
Processing = true;
process();
Processing = false;
}
public void Load()
{
//Logic to load the data
}
public void Save()
{
//Logic to save the data
}
用法示例:
//pass 'Load' method as parameter to load data :
Process(Load);
//pass 'Save' method as parameter to save data :
Process(Save);
尽管如此,我还没有验证我自己WP 8.1 universal apps是否支持Action delegate,因此很高兴听到您的消息。我认为这不会起作用,因为每个处理方法都有自己独特的签名。请尝试从抽象基VM继承您的VM,将处理逻辑放在其中。这只解决了让主虚拟机中的东西不那么凌乱的问题。谢谢,我想这是我唯一的选择。