数据绑定错误

本文关键字:错误 数据绑定 | 更新日期: 2023-09-27 18:04:39

大家好,我最近开始与windows商店应用程序开发,现在我正在研究数据绑定。我查看了MSDN的例子,并试图运行它,但我一直得到一个错误,这是我正在处理的代码

我的Mainpage.xaml文件

<Grid x:Name="LayoutRoot" Background="#FF0C0C0C">
    <TextBox x:Name="textBox1" Text="{Binding}" FontSize="30"
    Height="120" Width="440" IsReadOnly="True"
    TextWrapping="Wrap" AcceptsReturn="True" />
</Grid>

这是Mainpage.xaml.cs文件

// Constructor
public MainPage()
{
    InitializeComponent();
    // Set the data context to a new Recording.
    textBox1.DataContext = new Recording("Chris Sells", "Chris Sells Live", 
        new DateTime(2008, 2, 5));
    // Theres an error message that says textBox1 does not appear in the current context though i have declared it in the MainPage.xaml file

}
// A simple business object
public class Recording
{
    public Recording() { }
    public Recording(string artistName, string cdName, DateTime release)
    {
        Artist = artistName;
        Name = cdName;
        ReleaseDate = release;
    }
    public string Artist { get; set; }
    public string Name { get; set; }
    public DateTime ReleaseDate { get; set; }
    // Override the ToString method.
    public override string ToString()
    {
        return Name + " by " + Artist + ", Released: " + ReleaseDate.ToString("d");
    }
}

我一直在我的MainPage.xaml.cs文件中得到一个错误消息:

textbox1不存在

,尽管它在MainPage.xaml文件中。

数据绑定错误

我不知道为什么编译器告诉你这个错误。因为name在代码中看起来没问题。根据我的经验,它可能是错误在其他地方和编译器说一个错误消息的所有类型的错误(我有这样的情况与第一个版本的SDK Windows Phone)。

接下来的事情对我来说不太好:

  • TextBoxText属性绑定到数据上下文。另一方面,你在构造函数中将object设置为数据上下文。绑定到对象有点困难(通常在WPF中您会收到ToString()方法的结果)。它可以解释错误。尝试绑定到某个属性。例如:Text="{Binding Name}"
  • DataContext是继承属性这意味着如果你为窗口设置DataContext,这个窗口内的控件的所有属性将是相同的。因此,最佳做法是将设置代码替换为下一个this.DataContext=..
  • 当你更新Recording类的属性时,UI将对此一无所知。您必须实现INotifyPropertyChanged接口来修复此问题。