gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:18 24 4
gpt4 key购买 nike

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

我们希望将这段代码放在一个方法中,这样我们就可以调用该方法并将其作为参数传递给应该设置为 true 的属性的名称,而所有其他属性应该自动设置为 false那个方法。不幸的是,我不知道该怎么做。非常感谢任何帮助。谢谢。特雷克斯

最佳答案

就个人而言,我很想做类似的事情:

public enum EditMode {
Customer, Order, OrderItem, Employee
}

实际上那么您可能不需要那些 bool 值:

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;}}

如果您需要 bool 值,也许:

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");
}
}

关于c# - 如何编写在 foreach 循环中设置属性值的方法(Silverlight 和 MVVM 相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com