[英]difference when binding a Label and a TextBox (XAML)
剛剛發現一些令我非常驚訝的東西。
XAML代碼:
<Label Content="{Binding myParameter}"/>
<TextBox Text="{Binding myParameter}" />
myParameter是其ToString()方法被重寫的類的實例:
public override string ToString()
{
Console.WriteLine("Displaying value: " + Name);
return Name;
}
渲染時:標簽調用ToString()並顯示Name屬性。 TextBox不顯示任何內容
我可以得到一些解釋為什么嗎?
Content
應該是任何對象,這意味着將調用ToString()
。
Text
應為String屬性。 如果Text
未綁定到String屬性,則框架錯誤處理開始,並且不顯示任何內容。
最佳做法是直接綁定到您希望顯示的值,而不是父對象。 在這種情況下,直接綁定到Name
屬性。
根據MSDN TextBox.Text
屬性中的文本框文檔 ,其類型為string
:
public string Text { get; set; }
並且根據MSDN Label中的Label文檔, Label.Content
屬性的類型為object
:
public object Content { get; set; }
因此,為TextBox.Text
分配一些值將不會調用您已重寫的ToString()
方法,因為它已經是string
類型。 Label.Content
調用該方法,因為該對象將被轉換為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.