Dot-Net
WPF 在 TextBox 中混合綁定和固定文本
我有以下程式碼來顯示客戶年齡。
<TextBox x:Name="txtClientAge" Text="{Binding Path=ClientAge}" />但是,我不想只顯示數字,而是想在它前面加上文本“Age”,並用文本“yrs”作為後綴,所以它實際上變成了“Age 36 yrs”
我可以通過一個水平 StackPanel 和 3 個文本框來實現這一點,但是我缺少一個更簡單的方法嗎?
假設您不需要年齡值是可編輯的,在 WPF 4.0 中 Run 的 Text 屬性將是可綁定的,這可能對您現在沒有幫助,除非您使用的是預發行版,但您將能夠做一些事情如下所示:
<TextBlock x:Name="txtClientAge" > <Run Text="Age "/><Run Text="{Binding Path=ClientAge}"/><Run Text=" Yrs"/> </TextBlock>更新這是格式字元串解決方案的另一種替代方案,它可以工作但不是特別漂亮(實際上它很hacky)。在綁定上使用以下轉換器(假設 ClientAge 屬性是 int 類型):
public class AgeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string age = value.ToString(); return "Age " + age + " years"; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string age = value as string; return Int32.Parse(age.Replace("Age ", " ").Replace(" years", "")); } }