如何从MVVM中的selecteditem访问模型?

时间:2018-07-31 13:55:53

标签: c# wpf

我们假设我们有一个像这样的简单模型:

public class Person 
{
    public string Name { get; set; }
}

相应的视图模型:

public class PersonViewModel : INotifyPropertyChanged
{
    public Image Image { get; set; }

    public string Name 
    {
        get { return _person.Name; }  
    }

    private Person _person; 

    public PersonViewModel(Person person)
    {
        _person = person;
    }  

    #region INotifyPropertyChanged
    ...
    #endregion
}

最后是一个显示我们的人员的视图模型:

public class MainViewModel
{
    public PersonViewModel SelectedPerson { get; set; }

    public ObservableCollection<PersonViewModel> Persons { get; set; }
}

在视图方面,我们有这样的东西:

<DataGrid 
    ItemsSource="{Binding Path=Persons}" 
    SelectedItem="{Binding Path=SelectedPerson, Mode=TwoWay}"/>

如何以MVVM方式访问包装在SelectedPerson字段中的模型?

1 个答案:

答案 0 :(得分:0)

为您的public添加访问权限Person

public class PersonViewModel : INotifyPropertyChanged
{
    private Person _person;
    public Person Person
    {
        get
        {
            return _person;
        }
        set
        {
            _person = value;
            RaisePropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

然后,致电:

SelectedPerson.Person