【发布时间】:2020-04-17 03:22:19
【问题描述】:
我仍然掌握 WPF 的窍门,而且数据绑定很痛苦。我希望这个文本框绑定到页面的 Exam 对象的 Name 属性。
以下是我平时的做法。
<StackPanel VerticalAlignment="Center" x:Name="CreateExamStackPanel">
<TextBox Style="{StaticResource placeHolder}" Tag="Exam Name"
x:Name="NameTextBox" Text="{Binding Path=Name}" />
</StackPanel>
public partial class CreateExam : Page {
public CreateExam() {
InitializeComponent();
CreateExamStackPanel.DataContext = Exam;
}
private void CreateButton_Click(object sender, RoutedEventArgs e) {
if (Exam.Name?.Length > 0)
MessageBox.Show($"Exam named: {Exam.Name}");
else
MessageBox.Show($"Please enter a name for the exam.");
}
public Exam Exam { get; set; } = new Exam();
}
但在我看来,“应该”有一种方法可以完全通过 XAML 绑定到 Exam。
{Binding Path=Name} 指向Exam 的属性,但有没有办法直接指向Exam 本身?
我已尝试将 {Binding Exam} 添加到 XAML 中的 StackPanel 和 TextBox(并从 C# 中删除 .DataContext = Exam,但这似乎不起作用。
【问题讨论】:
-
您能否澄清一下,我实际上不确定您要完成什么。
-
是的,您可以,Text="{Binding}" 将绑定到它自己的考试。但是这里缺少的是 INotifyPropertyChanged 接口实现:docs.microsoft.com/en-us/dotnet/api/…
标签: c# wpf data-binding