2009-08-12 76 views
4

這應該有一個簡單的解決方案,但我似乎無法找到它。wpf字符串格式化非數字或日期

我想做類似以下的事情,我有一個字符串格式的數據綁定。該字段是一個文本字段,我想用後綴顯示它(但不更改基礎數據)。

<Label Name="field" Content="{Binding obj.field, StringFormat=\{0\} suffix}" /> 

所以我想obj.field的值,例如「值」,顯示爲「值後綴」。

是否真的有必要使用ValueConverter(或其他)來做到這一點?我在想如果StringFormat構造可以實現,那麼就有一些我沒有遇到的魔法格式選項。

這導致了一個相關的問題:我在哪裏可以找到WPF StringFormat的引用?我可以找到c#String.Format格式化選項的參考,但這些似乎並不能在WPF中工作(就像我上面所嘗試的那樣)。

+0

對相關問題的任何答案? – Klay 2009-08-13 15:44:10

+0

當我重新編寫答案時,我必須意外刪除了對相關問題的評論。我剛剛更新。 – 2009-08-13 17:19:37

回答

7

StringFormat將工作,如果目標類型是string。但是,LabelContent屬性的類型是對象。這就是爲什麼StringFormat沒有效果。如果您將TextBlock放入Label(或僅使用TextBlock)並綁定TextblockText屬性,它應該可以正常工作。

<Label> 
    <TextBlock Text="{Binding obj.field, StringFormat=\{0\} suffix}" /> 
</Label> 

如果您有其他原因,希望將值綁定到Label,你也可以做到以下幾點。

<Label DataContext="{Binding obj.field}"> 
    <TextBlock Text="{Binding ., StringFormat=\{0\} suffix}" /> 
</Label> 

相關問題:我想不出任何理由,你可以提供給string.Format()正常格式字符串不會工作。它們都應該是標準字符串和自定義字符串。 Here是一個包含多個示例的頁面。如果您發現有任何問題無法解決,請提供示例。

+1

謝謝。我意識到標籤不是「精簡版」的TextBlocks,正如我想象的那樣,但完全是另一種動物。謝謝回覆。 – Klay 2009-08-13 15:45:09