2014-01-15 89 views
0

我有這樣的C#對象(當前,Monitor.CarNumber值爲123456)結合讀出的數據註釋

public class Monitor 
    { 
     [Display(Name = "This is car number")] 
     public string CardNumber { get; set; } 
    } 

而在WPF,一種標籤控制顯示Monitor.CardNumber

<Label Content={Binding CardNumber} /> 

(當我運行該程序,它顯示123567,它工作正常)。

現在我不想顯示CardNumber的值,我希望它顯示「This is car number」(CardNumber屬性的數據註釋)。

我該怎麼做? (無C#代碼,只能修改上面的XML代碼)

+0

WPF沒有內置的'Display'屬性支持,並且沒有用於讀取屬性的XAML語法。所以不幸的是你的「沒有C#代碼」的要求不能滿足。 – nmclean

回答

1

您應該使用的ConverterReflection組合,以獲得顯示名稱的結合。

當您將您的標籤綁定到CardNumber時,Converter將使用Reflection查找附加屬性,如果它找到DisplayAttribute,將返回Name屬性from Binding屬性,否則返回CardNumber。

This對SO的回答將幫助您使用Reflection獲取Display.Name。

這看起來並不簡單,因爲您必須將屬性名稱傳遞給轉換器。