更新数据上下文中的自定义类型属性

时间:2012-03-23 10:01:24

标签: wpf

xaml:

<TextBox Text="{Binding EmailField.Email, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>

datacontext:

public class MainWindowViewModel
{
    private EmailModel _email = new EmailModel() {Email = "test@test.com"};

    public EmailModel EmailField
    {
        get { return _email; }
        set { _email = value; }
    }
}

型号:

public class EmailModel
{        
    public string Email { get; set; }
}

使用上面的代码,我可以看到EmailField.Email的价值。

问题:我应该更改哪些内容可以从UI更新EmailField.Email?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以直接在视图中设置EmailField属性的唯一方法是编写IValueConverter以从string(输入TextBox)转换为EmailModel,但我不建议这样做。

为什么不在视图模型中添加属性,如下所示:

public string Email
{
    get { return _email.Email; }
    set
    {
        _email.Email = value;
        this.OnPropertyChanged("Email"); //you will need to implement INotifyPropertyChanged
    }
}

然后,您可以绑定到视图模型Email属性,您的内部电子邮件对象将被正确更新,并且当值更改时,您的视图模型将在属性设置器中得到通知。