如果我没有向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访问器?即便如此,为什么数据绑定只能访问该属性?
谢谢,
答案 0 :(得分:3)
public String Message;
这是一个字段,而不是属性。添加getter和setter会创建一个auto属性。 只能绑定属性。
答案 1 :(得分:2)
{ get; set; }
是编译器生成这些隐式访问器的原因。如果你把它排除在外,你根本就不是创造一个属性,而是一个简单的领域。
我没有进入XAML,所以我不能肯定地说,但也许它只是不支持绑定到普通字段。
答案 2 :(得分:2)
public String Message;
是一个字段,而不是属性
数据绑定仅适用于属性。