WPF绑定 - StringFormat - 不格式化

时间:2010-12-21 11:17:19

标签: wpf binding

我有一个工具提示,其值设置为:

Value="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}"

工具包显示为:

  

72

但我希望它是:

  

保留(权益份额:72%)

我的绑定有什么问题?

7 个答案:

答案 0 :(得分:50)

toolTip是一个内容控件,这意味着它实际上没有显示模型。这在@deccyclone的早期答案中得到了证明,该答案将内容设置为TextBlock。由于TextBox旨在显示文本,因此StringFormat绑定属性的工作方式与广告一样。按钮是另一个例子。 (两者都来自ContentControl)

如果将ToolTip的内容设置为字符串,则会显示该字符串,因为如果dataType是字符串,则ToolTip具有内置转换器。如果要利用内置的字符串转换器,则需要使用ContentStringFormat属性设置格式。

<ToolTip
     Content="{Binding Path=Value}"
     ContentStringFormat="{}{0:F2} M"
/>

BTW,关于何时使用StringFormat或ContentStringFormat的提示是控件提供用于设置显示文本的属性。 文字属性 - &gt;使用StringFormat 内容属性 - &gt;使用ContentStringFormat

答案 1 :(得分:16)

你试过了吗?

<ToolTip>
    <TextBlock Text="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}" />
</ToolTip>

答案 2 :(得分:3)

您无需转义括号。试试这个(我喜欢把格式放在单引号中):

Value="{Binding Path=DataItem.EquitySold, StringFormat='Reserved (Equity Share: {0}%)'}"

答案 3 :(得分:0)

我认为这是你的数据类型所支持的 - 据我所知它作为IFormattable的参数传递。

答案 4 :(得分:0)

<Button.ToolTip>
 <TextBlock Text="{Binding Path=ToggleText, StringFormat={}{0} Text}"/>
</Button.ToolTip>

DataGridTemplateColumn中的按钮

答案 5 :(得分:0)

对于在稍微不同情况下结束的其他人来说,需要通过StringFormat设置工具提示Style

<DataGridTextColumn Header="Amount" CanUserSort="True"
                                    Binding="{Binding Amount,Mode=OneWay}">
    <DataGridTextColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="ToolTip">
                <Setter.Value>
                    <TextBlock Text="{Binding JournalEntryId, StringFormat='Reserved (Equity Share: \{0\}%)'}" />
                </Setter.Value>
            </Setter>
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

答案 6 :(得分:-1)

尝试

StringFormat=Reserved (Equity Share: {0:P0})