C# 无法将属性绑定到WPF标签

C# 无法将属性绑定到WPF标签,c#,wpf,C#,Wpf,我试图将标签的内容绑定到我的一个类中的属性值。当属性值更改时,我希望它更改标签的内容 这是我的位置类: public class Location : INotifyPropertyChanged { private String town; public String Town { get { return town; } set { OnPropertyChanged(Town);

我试图将标签的内容绑定到我的一个类中的属性值。当属性值更改时,我希望它更改标签的内容

这是我的位置类:

public class Location : INotifyPropertyChanged
{


    private String town;

    public String Town
    {
        get { return town; }
        set 
        {
            OnPropertyChanged(Town);
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string Property)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(Town));
    }

    public Location()
    {
      town = "test";
    }
 }
以下是XAML:


我在这里做错了什么,使它不能用属性的值更新标签内容?

您仍然需要设置局部变量town:

编辑:

尚未设置窗口的DataContext,因此需要设置它才能使绑定正常工作

XAML:


您仍然需要设置本地变量town:

编辑:

尚未设置窗口的DataContext,因此需要设置它才能使绑定正常工作

XAML:


这不是因为

public Location()
{
  town = "test"; // You set'd on the field and not the property so it didn't raise
}

这不是因为

public Location()
{
  town = "test"; // You set'd on the field and not the property so it didn't raise
}
首先:您需要将该值指定给私有字段town

第二:在构造函数中,您需要更新公共属性而不是私有字段,这样就可以触发OnPropertyChanged

public Location()
{
   Town = "test";
}
编辑:

第三:您的Xaml不显示数据绑定的任何源代码,您可以通过(例如)在代码隐藏中进行设置,因为您在这里没有遵循MVVM:

public MainWindow()
{
    InitializeComponent();
    This.DataContext = new Location();
}
首先:您需要将该值指定给私有字段town

第二:在构造函数中,您需要更新公共属性而不是私有字段,这样就可以触发OnPropertyChanged

public Location()
{
   Town = "test";
}
编辑:

第三:您的Xaml不显示数据绑定的任何源代码,您可以通过(例如)在代码隐藏中进行设置,因为您在这里没有遵循MVVM:

public MainWindow()
{
    InitializeComponent();
    This.DataContext = new Location();
}


你难道没有忘记实际设置你的值吗?@Kilazur没有,我只是在开始编写示例时省略了它,现在又把它放回了。我的意思是,就像toadflakz的回答:town=value在你的集合中,你在哪里设置数据上下文?是如何将XAML与ViewModel关联起来的。难道你没有忘记实际设置值吗?@Kilazur不,我刚开始只是为了简单地编写示例而忽略了这一点,现在又把它放回去了。我的意思是,就像Toadflatz的回答:town=value在你的集合中,你在哪里设置数据上下文?是如何将XAML与ViewModel关联的。此外,还必须将窗口的DataContext设置为位置的实例class@blindmeis的确我以为已经处理好了,但没有检查他的Xaml,要编辑!除此之外,您还必须将窗口的DataContext设置为您所在位置的实例class@blindmeis的确我以为已经处理好了,但没有检查他的Xaml,要编辑!您如何为包含Location类对象的窗口设置DataContext?我没有,如何设置?通过XAML或将Window.DataContext设置为您的对象。但是在此窗口上,我初始化了几个对象。如何将一个标签绑定到Location.Property,将另一个标签绑定到Weather.Property?这是您建议的方式,看起来它正在设置一个新的空Location实例,并且没有将Location实例与我需要使用的属性一起使用,这是在Window_Loaded!?您如何为包含Location类对象的窗口设置DataContext?我没有,如何设置?通过XAML或将Window.DataContext设置为您的对象。但是在此窗口上,我初始化了几个对象。如何将一个标签绑定到Location.Property,将另一个标签绑定到Weather.Property?这是您建议的方式,看起来它正在设置一个新的空Location实例,并且没有将Location实例与我需要使用的属性一起使用,这是在Window_Loaded!?
public Location()
{
   Town = "test";
}
public MainWindow()
{
    InitializeComponent();
    This.DataContext = new Location();
}