Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF绑定-StringFormat-未格式化_Wpf_Binding - Fatal编程技术网

WPF绑定-StringFormat-未格式化

WPF绑定-StringFormat-未格式化,wpf,binding,Wpf,Binding,我有一个工具提示,其值设置为: Value="{Binding Path=DataItem.EquitySold, StringFormat=Reserved (Equity Share: \{0\}%)}" toolip显示为: 七十二 但我希望是: 预留(股本:72%) 我的绑定有什么问题吗?试试看 StringFormat=Reserved (Equity Share: {0:P0}) 您是否尝试过: <ToolTip> <TextBlock Text="{B

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

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

七十二

但我希望是:

预留(股本:72%)

我的绑定有什么问题吗?

试试看

StringFormat=Reserved (Equity Share: {0:P0})
您是否尝试过:

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

您不需要跳过括号。试试这个(我喜欢用单引号括起来):


我假设它是您的数据类型所支持的—据我所知,它是作为参数传递给IFormattable的。

工具提示是一个内容控件,这意味着它实际上没有显示模型。在前面的回答中,@decconnel演示了这一点,它将内容设置为文本块。由于TextBox设计用于显示文本,因此StringFormat绑定属性的工作方式与广告相同。按钮是另一个例子。(两者都源自ContentControl)

如果将工具提示的内容设置为字符串,则会显示该字符串,因为如果数据类型为字符串,则工具提示具有内置转换器。如果希望利用内置的字符串转换器,则需要使用ContentStringFormat属性设置格式

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

顺便说一句,何时使用StringFormat或ContentStringFormat的提示是控件提供用于设置显示文本的属性。 文本属性->使用字符串格式 内容属性->使用ContentStringFormat


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

DataGridTemplateColumn中的按钮

对于出现在此处的任何其他人来说,情况稍有不同,这是通过
样式设置工具提示
StringFormat
所需的:

<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>


我无法理解这个xaml是如何编译的,我担心这没有任何区别。我担心这没有任何区别Header属性->HeaderString格式:)谢谢!为什么在ContentStringFormat中首先列出了打开和关闭花括号?
@ClearCloud8
当需要将{0}作为第一个字符时,
Binding…,StringFormat={}{0}
中需要打开和关闭花括号。对于
ContentStringFormat
,它们不是必需的,但它们也可能存在。为什么他不能使用Value属性?@TomerW:Mitch在他的回答中解释了原因。
<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>