下面是使用 MVVM LightSet方法的基本模式:
public class MyViewModel : ViewModelBase
{
private string _text;
public Text
{
get{ return _text; }
set{ Set(()=>Text, ref _text, value); }
}
}
Run Code Online (Sandbox Code Playgroud)
但是在我的项目中,我将字段保留在 DataModel 类中,这对于克隆数据和复制取消修改非常有用:
public class MyDataModel
{
public string Text;
}
public class MyViewModel : ViewModelBase
{
private MyDataModel data;
public Text
{
get{ return data.Text; }
set{ data.Text = value; RaisePropertyChanged(()=>Text); }
}
}
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下我不能使用该Set方法,因为它的第二个参数是ref并且我不能data.Text用作ref参数。
Set( ()=>Text, ref data.Text, value ); // …Run Code Online (Sandbox Code Playgroud)