为什么数据绑定源需要一个显式的getter?

时间:2012-02-12 23:48:14

标签: windows-phone-7 data-binding

如果我没有向String属性添加显式访问器,则数据绑定不起作用。这是为什么? 这是一个简单的示例,其中文本框连接到String属性。

MainPage.xaml中:

<Grid Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <TextBlock Text="{Binding Message} />
</Grid>

背后的代码:

public String Message;

public MainPage()
{
    InitializeComponent();
    Message = "Hello World";
    DataContext = this;
}

这不起作用,文本框为空。

但是,添加属性访问者;

public String Message { get; set; };

现在它有效。

我无法在MSDN Data Binding中看到这一点。有人可以解释一下吗?属性是否有隐含的set / get访问器?即便如此,为什么数据绑定只能访问该属性?

谢谢,

3 个答案:

答案 0 :(得分:3)

public String Message;

这是一个字段,而不是属性。添加getter和setter会创建一个auto属性。 只能绑定属性。

答案 1 :(得分:2)

{ get; set; }是编译器生成这些隐式访问器的原因。如果你把它排除在外,你根本就不是创造一个属性,而是一个简单的领域。

我没有进入XAML,所以我不能肯定地说,但也许它只是不支持绑定到普通字段。

答案 2 :(得分:2)

public String Message;是一个字段,而不是属性 数据绑定仅适用于属性。