WPF MVVM通过文本框插入对象

时间:2016-06-29 22:41:05

标签: c# wpf mvvm insert

我试图通过文本框使用MVVM模式将对象插入数据库。实际问题是首先将对象放入ViewModel。我的想法是在ViewModel中添加Customer类型的NewCustomer,然后将文本框绑定到适当的属性。这是它的样子:

XAML:

<Label Content="First Name:" Grid.ColumnSpan="2" Margin="10,0,325,227"/>
<TextBox Text="{Binding NewCustomer.FirstName}"  Grid.Column="1" Margin="0,31,322,227"/>
<Label Content="Last Name:" Grid.ColumnSpan="2" Margin="10,74,325,158"/>
<TextBox  Text="{Binding NewCustomer.LastName}" Margin="10,110,325,148" Grid.ColumnSpan="2"/>
<Label Content="Bank Balance:" Margin="10,148,325,81" Grid.ColumnSpan="2"/>
<TextBox Text="{Binding NewCustomer.BankBalance}" Grid.Column="1" Margin="0,179,322,81"/>
<Label Content="About me:" Margin="10,215,325,10" Grid.ColumnSpan="2"/>
<TextBox Text="{Binding NewCustomer.AboutMe}" Grid.Column="1" Margin="0,246,322,10"/>
<Button Margin="255,113,67,141" Content="Add" Command="{Binding AddCommand}" Grid.Column="1">

ViewModel(重要部分):

private Customer _newCustomer;
public Customer NewCustomer
{
    get { return _newCustomer; }
    set
    {
        _newCustomer = value;
        RaisePropertyChanged("NewCustomer");
    }
}
/.../
public void Add(object C)
{

    db.Customers.Add(NewCustomer);
    db.SaveChanges();
    LoadCustomers();

}

public RelayCommand AddCommand { get; set; }
#endregion

但由于某种原因,NewCustomer属性始终为null(通过调试检查)。

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:0)

它是null因为没有人创建它,

使用此,

private Customer _newCustomer = new Customer();

后应正确绑定值

或者另一种方式,在ViewModel构造函数中执行init

NewCusomer = new Customer();