从构造函数初始化后,自定义对象重置其值

时间:2016-02-18 14:05:58

标签: c# wpf mvvm mvvm-light

我通过IMessenger(MVVM Light Toolkit)创建(如果不存在)新的ViewModel实例,并通过构造函数传递自定义对象,该构造函数是我的MainViewModel的属性。 在这个ViewModel中,我也将它设置为一个Property并使用它,例如用于命令执行方法。但是当我通过Binding触发Command时,自定义Object Property会丢失其值。 我已经调试并看到,对象get的值正确传递,但是从构造函数初始化后它是空的(Not null,只是空属性)。

我的自定义对象

public class CustomObject : ObservableObject
{
    public int Id { get; set; }
    public string Property1 { get; set; }
    public string Property2 { get; set; }

    // etc...
}

我像这样创建ViewModel

public CustomObject CustomObj
{
    get { return _customObj; }
    set { Set(ref _customObj, value); }
}

_customViewModel = new CustomViewModel(CustomObj, _dataService);

ViewModel

public CustomViewModel(CustomObject obj, IDataService dataService)
{
    _dataService = dataService;

    // Here it sets correctly the Object
    CustomObj = obj;
}

public CustomObject CustomObj
{
    get { return _customObj; }
    set { Set(ref _customObj, value); }
}

// Even before the Command is triggered, the Object is already empty
public ICommand SomeCommand => new RelayCommand<string>(async s =>
{
    var someThing = await _dataService.GetSomeData(CustomObj.Id);

    // Stuff...
}

如果重要的话,它们也会在SimpleIoC容器中注册。

可能导致什么结果?

0 个答案:

没有答案
相关问题