将属性数据绑定到WPF中的标签时出错

fbcarpbf  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(86)

我是在WPF中建立基本的应用程序;我无法在主视图中显示学生姓名(“Alexa”)。下面是我的代码详细信息:
我在Model中有一个Student.cs类,如图所示

namespace Client.Model
{
    class Student:INotifyPropertyChanged
    {
        private string _name ="Alexa";
       

        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                OnPropertyChanged(nameof(Name));
            }
        }

        private void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        public event PropertyChangedEventHandler? PropertyChanged;
    } }

字符串
而MainViewModel.cs是

class MainViewModel: ViewModelBase
    {
      

        public Student Student
        {
            get { return _student; }
            set {
                if (_student != value)
                {
                    _student = value;

                }
                OnPropertyChanged("_student");
                            }
        }       

    }


在我的主视图中,我尝试将学生姓名显示为

<Label FontStyle="Italic" >Student Name is:</Label>
<Label FontStyle="Italic" Content="{Binding Student.Name}" ></Label>


我也设置了
MainView.cs中的this.DataContext = new MainViewModel();
我错过了什么?

nue99wik

nue99wik1#

您需要在某处初始化Student属性:

class MainViewModel : ViewModelBase
{
    private Student _student = new Student(); //<--

    public Student Student
    {
        get { return _student; }
        set
        {
            if (_student != value)
            {
                _student = value;
                OnPropertyChanged(nameof(Student));
            }
        }
    }
}

字符串
还要注意,您应该使用nameof运算符为MainViewModel类中的 property 引发PropertyChanged事件。

相关问题