数据绑定错误

时间:2015-07-26 16:11:52

标签: c# wpf xaml

大家好我最近开始使用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文件中。

1 个答案:

答案 0 :(得分:1)

我不确定为什么编译器会说你这个错误。因为名称在您的代码中看起来不错。根据我的经验,它可能是其他地方的错误,并且编译器会针对所有类型的错误发出一条错误消息(我在Windows Phone的第一版SDK中遇到过这种情况)。

接下来这对我来说看起来并不好看:

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