【发布时间】:2019-08-07 16:40:08
【问题描述】:
我一直在尝试不同的方法,但没有成功。所以这是我的问题:我想将我在文本块上键入的内容绑定到标签。没什么特别的,但我想在此基础上构建其他东西。这是我的代码:
MainWindow.Xaml
<StackPanel Orientation="Vertical">
<TextBox Text="{Binding Path=Name2, ElementName=window, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding Path=Name2, ElementName=window, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>
MainWindow.xaml.cs
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private string _name2;
public string Name2
{
get { return _name2; }
set
{
if (value != _name2)
{
_name2 = value;
OnPropertyChanged("Name2");
}
}
}
public MainWindow()
{
InitializeComponent();
}
}
我的期望是在我在文本块上键入时看到标签发生变化,我已经使用 Xamarin 完成了很多次,但我无法让它在 WPF 上工作。我错过了什么?
提前致谢。
【问题讨论】:
-
你设置
DataContext了吗? -
你好@Sach,不。我以前试过,可能做错了。由于我在 MainWindow.xaml.cs 上创建了依赖属性,我还需要在 XAML 文件上设置数据源吗?如果是,怎么做?
-
window(小写)在哪里声明?
-
@Peregrine 这是我从我正在阅读的一篇文章中添加的内容,但忘记删除它。无论有没有它,它都不起作用。抱歉,我不记得这篇文章了。
-
这确实是一种奇怪的构造数据绑定的方式——在 MVVM 中,通常的方式是创建一个 ViewModel 类来保存属性,并将窗口的 DataContext 设置为此类的一个实例。