簡體   English   中英

綁定標簽和文本框(XAML)時的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM