将字符串绑定到TextBlock WPF -我做错了什么?
本文关键字:错了 什么 WPF 字符串 绑定 TextBlock | 更新日期: 2023-09-27 18:16:13
我读了一些线程,这些线程解释了WPF上的绑定,但是当我编写该代码时,它没有将字符串绑定到我的TextBlock,我不知道为什么。
帮助吗?
XAML
<TextBlock x:Name="myTextBlock"
Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
c# public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
_name = "Jones";
myTextBlock.DataContext = Name;
}
private string _name;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
OnPropertyChanged("Name");
}
}
// property changed event
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
如上所述
this.DataContext = this;
的后台代码。我现在不能测试,updatesourcetrigger应该在你每次输入一个键时更新你的属性。添加模式= TwoWay。
<TextBlock x:Name="myTextBlock" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
set
myTextBlock.DataContext = Name;
myTextBlock.DataContext = this;
最好设置MainWindow的DataContext,而不是设置TextBlock的DataContext。像
InitializeComponent();
_name = "Jones";
this.DataContext = this;
否则,您将需要设置每个控件的DataContext,您将在窗口中使用
Binding使用反射在DataContext中找到指定的路径(这里是Name)。所以你的Name属性是在MainWindow类中,所以你需要设置DataContext为MainWindow类的实例。
将属性名称从name更改为其他属性名称,因为该属性名称已经存在于MainWindow正在继承的窗口类中,并且它试图绑定该属性