以下代码有一个简单的绑定(bind),它使用完全相同的绑定(bind)表示法将名为 MyTextBlock 的 TextBlock 的文本绑定(bind)到 TextBox 的 Text 和 ToolTip 属性:
<StackPanel>
<TextBlock x:Name="MyTextBlock">Foo Bar</TextBlock>
<TextBox Text="{Binding ElementName=MyTextBlock, Path=Text, StringFormat='It is: \{0\}'}"
ToolTip="{Binding ElementName=MyTextBlock, Path=Text, StringFormat='It is: \{0\}'}" />
</StackPanel>
绑定(bind)还使用 StringFormat property introduced with .NET 3.5 SP1对于上面的 Text 属性来说工作正常,但是对于 ToolTip 来说似乎被破坏了。预期结果是“It is: Foo Bar”,但是当您将鼠标悬停在文本框上时,工具提示仅显示绑定(bind)值,而不显示字符串格式的值。有什么想法吗?
最佳答案
WPF 中的工具提示可以包含任何内容,而不仅仅是文本,因此当您只需要文本时,它们提供了 ContentStringFormat 属性。据我所知,您需要使用扩展语法:
<TextBox ...>
<TextBox.ToolTip>
<ToolTip
Content="{Binding ElementName=myTextBlock,Path=Text}"
ContentStringFormat="{}It is: {0}"
/>
</TextBox.ToolTip>
</TextBox>
我不能 100% 确定使用来自此类嵌套属性的 ElementName 语法进行绑定(bind)的有效性,但 ContentStringFormat 属性正是您所寻找的。p>
关于WPF 与 StringFormat 的绑定(bind)不适用于工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197095/