Mvvm light AOP示例

时间:2015-07-28 15:07:27

标签: c# wpf mvvm ioc-container

我创建了一些使用IOC容器的很棒的例子。 example  它看起来很酷。 Ben Scheirman建议使用IOC将INotyfi的每个房产包起来。但我不知道如何在Mvvm light IOC容器下实现它。 因为我在MvvmLight中找不到var bindingFriendlyInstance = IoC.Resolve<Customer>(new NotifyPropertyChangedWrapper());。 MvvmLight只有SimpleIoc.Default.GetInstance<Customer>();但它不带任何参数。

public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime CustomerSince { get; set; }
public string Status { get; set; }
}

UglyCustomer

public class UglyCustomer : INotifyPropertyChanged
{
private string _firstName;
public string FirstName
{
    get { return _firstName; }
    set
    {
        string oldValue = _firstName;
        _firstName = value;
        if(oldValue != value)
            OnPropertyChanged("FirstName");
    }
}

private string _lastName;
public string LastName
{
    get { return _lastName; }
    set
    {
        string oldValue = _lastName;
        _lastName = value;
        if(oldValue != value)
            OnPropertyChanged("LastName");
    }
}

private DateTime _customerSince;
public DateTime CustomerSince
{
    get { return _customerSince; }
    set
    {
        DateTime oldValue = _customerSince;
        _customerSince = value;
        if(oldValue != value)
            OnPropertyChanged("CustomerSince");
    }
}

private string _status;
public string Status
{
    get { return _status; }
    set
    {
        string oldValue = _status;
        _status = value;
        if(oldValue != value)
            OnPropertyChanged("Status");
    }
}

protected virtual void OnPropertyChanged(string property)
{
    var propertyChanged = PropertyChanged;

    if(propertyChanged != null)
        propertyChanged(this, new PropertyChangedEventArgs(property));
}

public event PropertyChangedEventHandler PropertyChanged;
}

0 个答案:

没有答案