绑定标签和文本框(XAML)时的区别
本文关键字:区别 XAML 标签 文本 绑定 | 更新日期: 2023-09-27 18:04:24
刚发现一件让我很惊讶的事。
XAML代码: <Label Content="{Binding myParameter}"/>
<TextBox Text="{Binding myParameter}" />
myParameter是ToString()方法被重写的类的实例:
public override string ToString()
{
Console.WriteLine("Displaying value: " + Name);
return Name;
}
当呈现:标签调用ToString()并显示Name属性。文本框不显示任何内容
我能得到一些解释吗?
Content
是任何对象,这意味着ToString()
将被调用。
Text
应该是一个String属性。如果Text
没有绑定到String属性,那么框架错误处理将启动并且它不显示任何内容。
最佳实践是直接绑定到您希望显示的值,而不是父对象。在本例中,直接绑定到Name
属性。
根据MSDN中的文本框文档TextBox.Text
属性类型为string
:
public string Text { get; set; }
并且根据MSDN中的标签文档Label.Content
属性类型为object
:
public object Content { get; set; }
因此,给TextBox.Text
赋值将不会调用您已经覆盖的ToString()
方法,因为它已经是string
类型。Label.Content
调用该方法,因为对象正在被转换为字符串。