将StringFormat绑定到绑定

时间:2016-01-30 12:56:16

标签: wpf xaml

我可以将StringFormat内的Binding绑定到另一个Binding吗?

Text="{Binding DeficitDollars, StringFormat=\{0:E6\}}"

Text="{Binding GNP, StringFormat={Binding LocalCurrencyFormat}}"

2 个答案:

答案 0 :(得分:1)

您无法Binding使用StringFormat。正如例外情况告诉您是否尝试过:

  

A' Binding'只能在a DependencyProperty上设置   DependencyObject

StringFormat不是DependencyPropertyBinding不是DependencyObject

你可以做这两件事。

  1. 将其设置为资源。
  2. 您可以在App.xaml的{​​{1}}中定义不同的字符串格式,以便在整个应用程序中可以访问这些格式:

    Resources

    <system:String x:Key="LocalCurrencyFormat">{0:C}</system:String> system

    然后你可以这样做:

    xmlns:system="clr-namespace:System;assembly=mscorlib"
    1. 将其设置为类的静态属性。
    2. 您可以拥有一个包含所有不同字符串格式的类:

      <TextBlock Text="{Binding MyDouble, StringFormat={StaticResource LocalCurrencyFormat}}" />
      

      并以public static class StringFormats { public static string LocalCurrencyFormat { get { return "{0:C}"; } } } 方式使用它:

      Binding

答案 1 :(得分:0)

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Width="500" Height="500">

    <Window.Resources>
        <sys:String x:Key="LocalCurrencyFormat">Total: {0:C}</sys:String>
    </Window.Resources>
    <StackPanel>
        <TextBlock Text="{Binding DeficitDollars, StringFormat=\{0:E6\}}"></TextBlock>
        <TextBlock Text="{Binding Path=GNP, StringFormat={StaticResource LocalCurrencyFormat}}" />
    </StackPanel>
</Window>