1

我在将模型更改更新回我的视图模型时遇到问题,以便我可以显示。在这个例子中,我有一个标签和一个按钮,当我按下按钮时,它将执行一些业务逻辑,并且应该更新屏幕上的标签。但是,当我的模型更改时,视图不会。关于我在这里做错了什么的任何想法?

看法-

<Window.DataContext>
    <vm:ViewModel>
</Window.DataContext>
<Grid>
    <Label Content="{Binding Path=Name}"/>
    <Button Command={Binding UpdateBtnPressed}/>
</Grid>

视图模型

public ViewModel()
{
    _Model = new Model();
}

public string Name
{
    get{return _Model.Name;}
    set
    {
        _Model.Name = value;
        OnPropertyChanged("Name");
    }
}

public ICommand UpdateBtnPressed
{
get{
_UpdateBtn = new RelayCommand(param => UpdateLabelValue());
return _UpdateBtn;
}

private void UpdateLabelValue()
{
    _Model.Name = "Value Updated";
}

模型

private string name = "unmodified string";

public string Name
{
    get{return name;}
    set{name = value;}
}
4

3 回答 3

6

尝试这个:

private void UpdateLabelValue()
{
  Name = "Value Updated";
}
于 2013-01-29T13:18:12.287 回答
1

您的模型必须实现 INotifyPropertyChanged 例如;

public class Personel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; OnChanged("Name");}
        }


        void OnChanged(string pn)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(pn));
            }
        }
    }
于 2013-01-29T13:22:30.540 回答
1

您似乎错过了实现INotifyPropertyChanged接口。

于 2013-01-29T13:20:46.633 回答