Dot-Net

WPF 在 TextBox 中混合綁定和固定文本

  • October 8, 2015

我有以下程式碼來顯示客戶年齡。

<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", ""));
   }
}

引用自:https://stackoverflow.com/questions/1429802