簡體   English   中英

TextBlock:Text和StringFormat的綁定

[英]TextBlock: Binding of Text and StringFormat

是否可以綁定TextStringFormat

<TextBlock Text="{Binding Path=Price, StringFormat={Binding Path=DecimalPoints}}" />

DecimalPointsF0F15不斷變化。 不幸的是,上面的代碼無法編譯。

如前所述@Sheridan,在這種情況下, Binding將不起作用。 但是您可以使用靜態字符串創建一個類,並在XAML中引用它們。 語法是:

<x:Static Member="prefix : typeName . staticMemberName" .../>

以下是一個例子:

XAML

xmlns:local="clr-namespace:YourNameSpace"
xmlns:sys="clr-namespace:System;assembly=mscorlib"

<Grid>
    <TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat={x:Static Member=local:StringFormats.DateFormat}}" 
               HorizontalAlignment="Right" />

    <TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat={x:Static Member=local:StringFormats.Time}}" />
</Grid>

Code behind

public class StringFormats 
{
    public static string DateFormat = "Date: {0:dddd}";

    public static string Time = "Time: {0:HH:mm}";
}   

有關更多信息,請參閱:

x:MSDN上的靜態標記擴展

我認為你最好的選擇絕對是轉換器。 然后你的綁定看起來像這樣:

<TextBlock.Text>
   <MultiBinding Converter="{StaticResource StringFormatConverter }">
      <Binding Path="Price"/>
      <Binding Path="DecimalPoints"/>
   </MultiBinding>
</TextBlock.Text>

然后一個快速轉換器(你當然可以使它更好,但這是一般的想法)。

    public class StringFormatConverter : IMultiValueConverter
    {
      #region IMultiValueConverter Members

      public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
      {
          double number = (double)values[0];
          string format = "f" + ((int)values[1]).ToString();
          return number.ToString(format);
      }

      public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
      {
        throw new NotImplementedException();
      }

      #endregion
    }

不,你不能......原因是因為你只能綁定到DependencyPropertyDependencyObject ,而Binding類的StringFormat屬性只是一個string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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