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();
}