C# 如何编写在foreach循环中设置属性值的方法(Silverlight和MVVM相关)

C# 如何编写在foreach循环中设置属性值的方法(Silverlight和MVVM相关),c#,silverlight,data-binding,mvvm,C#,Silverlight,Data Binding,Mvvm,我有一个Silverlight 4 MVVM应用程序,它使用数据绑定到ViewModel上的布尔属性,如IsEditingCustomer、isEditingOrder、isEditingOrderItem、isEditingEmployee等,以设置视图某些部分的状态。 要求只有一个区域可以编辑,而不是同时编辑两个区域。因此,在ViewModel中(当响应用户事件时),我们发现自己编写的代码如下: isEditingCustomer=false; isEditingOrder=false; i

我有一个Silverlight 4 MVVM应用程序,它使用数据绑定到ViewModel上的布尔属性,如IsEditingCustomer、isEditingOrder、isEditingOrderItem、isEditingEmployee等,以设置视图某些部分的状态。 要求只有一个区域可以编辑,而不是同时编辑两个区域。因此,在ViewModel中(当响应用户事件时),我们发现自己编写的代码如下: isEditingCustomer=false; isEditingOrder=false; isEditingOrderItem=false; ... isEditingEmployee=true

我们希望在一个方法中包含这段代码,这样我们就可以调用该方法,并将属性名作为参数传递给它,该属性名应该设置为true,其他所有属性都应该由该方法自动设置为false。 不幸的是,我不知道该怎么做。 非常感谢您的帮助。 谢谢 Trex

就我个人而言,我很想做如下事情:

public enum EditMode {
    Customer, Order, OrderItem, Employee
}
事实上,你可能不需要这些胸部:

public EditMode EditMode {get;set;}
或者您可以用属性替换:

private EditMode editMode;   
public bool IsEditingCustomer { get {return editMode == EditMode.Customer;}}
public bool IsEditingOrder { get {return editMode == EditMode.Order;}}
public bool IsEditingOrderItem { get {return editMode == EditMode.OrderItem;}}
public bool IsEditingEmployee { get {return editMode == EditMode.Employee;}}
如果您需要,也许:

public void SomeMethod(..., EditMode mode) {
    isEditingCustomer = isEditingOrder =
        isEditingOrderItem = isEditingEmployee = false;
    switch(mode) {
        case EditMode.Customer: isEditingCustomer = true; break;
        case EditMode.Order: isEditingOrder = true; break;
        case EditMode.OrderItem: isEditingOrderItem = true; break;
        case EditMode.Employee: isEditingEmployee = true; break;
        default: throw new ArgumentOutOfRangeException("mode");
    }
}