Windows phone 7 数据绑定属性不工作

Windows phone 7 数据绑定属性不工作,windows-phone-7,data-binding,user-interface,Windows Phone 7,Data Binding,User Interface,首先为我的英语感到抱歉 我正在开发一个WP7应用程序,但我还没有完全理解数据绑定结构。我有一个页面,其中包含一些通过数据绑定获得的数据。数据是在.cs中生成的,并且工作正常 但在另一个页面上,我也有一些从数据绑定中获得的数据,但我希望它来自UI输入文本。它很简单,只有一个文本框和一个文本块,所以用户在文本框上写了一些东西,然后它显示在同一页的文本块上。但它不工作,文本块仍然是空的 是这样的: <TextBox Name="TestInput"> <TextBlock Text=

首先为我的英语感到抱歉

我正在开发一个WP7应用程序,但我还没有完全理解数据绑定结构。我有一个页面,其中包含一些通过数据绑定获得的数据。数据是在.cs中生成的,并且工作正常

但在另一个页面上,我也有一些从数据绑定中获得的数据,但我希望它来自UI输入文本。它很简单,只有一个文本框和一个文本块,所以用户在文本框上写了一些东西,然后它显示在同一页的文本块上。但它不工作,文本块仍然是空的

是这样的:

<TextBox Name="TestInput">
<TextBlock Text="{Binding TestText}">
上面这是C#上的内容

但是!!这里还没有结束。因为textblock没有显示任何内容,所以我拼命地尝试为TestText属性分配一些纯字符串。像这样:

TestText = "HELLO WORLD";
但当应用程序启动并加载页面时,文本块什么也不显示。我只是不明白我错过了什么,或者做错了什么

如果有人能澄清我的数据绑定结构,或者至少解释一下我做错了什么,我会很感激的,这样我就可以自己找出答案了


提前谢谢各位

您必须先分配DataContext,然后才能获得绑定效果。因此,每当文本框发生更改时,您都要在textchanged事件中编写代码

this.DataContext=TestText
您需要执行的另一个更改是,您没有实际设置属性


TestText=TestInput.Text

为了让您理解绑定,我举了一个简单的工作示例..只需遵循以下内容。。 这是您的页面,您可以在其中将textbox的数据绑定到某个属性textboxText..当您完成在此textbox中的写入后,所有WriteText将自动进入此属性。这个属性也绑定到textbloack,所以当你的textbloack获得焦点时,它将到达属性的get并自动填充它。

为什么在InitializeComponent()上使用“this”关键字???真的有必要吗?我以为“this”是指当前实例,我的意思是,“InitializeComponent();”和“this.InitializeComponent();”之间有什么区别?我不明白
this.DataContext=TestText
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel Orientation="Horizontal" >
        <TextBox x:Name="testTextbox" Height="50" Width="200" Text="{Binding TextboxText,Mode=TwoWay}" />
        <TextBlock  x:Name="testTextblock" Height="50" Width="1000" Text="{Binding TextboxText,Mode=OneWay}" Foreground="White" />
    </StackPanel>
</Grid>
public sealed partial class MainPage : Page,INotifyPropertyChanged
{
    public MainPage()
    {
        this.InitializeComponent();
        this.DataContext = this;
    }

    private string _TextboxText;
    public string TextboxText
    {
        get
        {
            return _TextboxText;
        }
        set
        {
            _TextboxText = value;

            FirePropertyChanged("TextboxText");
            testTextblock.UpdateLayout();

        }
    }


    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void FirePropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}