检查屏幕是否被修改的好方法是什么?

时间:2012-08-27 16:55:40

标签: wpf data-binding caliburn.micro

您能否建议一种优雅的方法来检查视图上的数据是否已被修改以相应地启用“保存”按钮?

感谢。

1 个答案:

答案 0 :(得分:0)

假设您正在将MVVM与Caliburn.micro一起使用,那么命令就有一个Can-convention。因此,假设您要在名为Username的字符串属性为非空时启用“保存”按钮,则只需将此方法添加到视图模型中:

public bool CanSave()
{
    if(String.IsNullOrEmpty(UserName))
        return false;

    return true;
}

假设您的类继承了PropertyChangedBase或Screen,并且您有一个Name =“Save”的按钮,如果UserName为空,它将被禁用。如果您对视图中的数据更改感兴趣,则相关属性(在此示例中为UserName)当然必须绑定到视图中的某个输入区域 - 例如,您可以使用名为UserName的TextBox来设置Caliburn按惯例约束。

整个课程看起来像这样:

编辑只允许保存实际不同的数据

public class UserViewModel : PropertyChangedBase
{
    private string _savedUserName;

    public string UserName{ get; set; }

    public bool CanSave()
    {
        return !UserName.Equals(_savedUserName);
    }

    public void Save()
    {
        //Save the data

        _savedUserName = UserName;
    }
}