C# WP 8.1 ViewModel处理属性

C# WP 8.1 ViewModel处理属性,c#,viewmodel,win-universal-app,C#,Viewmodel,Win Universal App,我正在使用ViewModels编写一个WP 8.1应用程序。几乎所有这些ViewModel都有一个处理属性,如果发生了某些事情(例如加载/更新数据),该属性将得到更新。我把它绑在一个处理环上。我的问题是,这个变量被设置并引用viewmodel中的所有地方,这使得它变得混乱。有没有更优雅的方法?下面是一个例子 公共类CustomViewModel { 公共布尔处理{get;set;} 公共空荷载 { 处理=真; //加载数据的逻辑 处理=假; } 公共作废保存 { 处理=真; //保存数据的逻辑

我正在使用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,将处理逻辑放在其中。这只解决了让主虚拟机中的东西不那么凌乱的问题。谢谢,我想这是我唯一的选择。