下面的代码有一个简单的绑定,它使用完全相同的Binding表示法将名为MyTextBlock的TextBlock的Text绑定到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>
Run Code Online (Sandbox Code Playgroud)
绑定还使用.NET 3.5 SP1引入的StringFormat属性,该属性对于上面的Text属性工作正常但似乎在工具提示中被破坏.预期的结果是"它是:Foo Bar",但是当您将鼠标悬停在TextBox上时,ToolTip仅显示绑定值,而不是字符串格式化的值.有任何想法吗?
Mat*_*ton 151
WPF中的工具提示可以包含任何内容,而不仅仅是文本,因此它们为您只需要文本的时间提供ContentStringFormat属性.据我所知,您需要使用扩展语法:
<TextBox ...>
<TextBox.ToolTip>
<ToolTip
Content="{Binding ElementName=myTextBlock,Path=Text}"
ContentStringFormat="{}It is: {0}"
/>
</TextBox.ToolTip>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
我不是100%确定使用嵌套属性中的ElementName语法绑定的有效性,但是ContentStringFormat属性是您正在寻找的.
Mui*_*ota 21
这可能是一个错误.当您使用工具提示的短语法时:
<TextBox ToolTip="{Binding WhatEverYouWant StringFormat='It is: \{0\}'}" />
Run Code Online (Sandbox Code Playgroud)
StringFormat是忽略但是当您使用扩展语法时:
<TextBox Text="text">
<TextBox.ToolTip>
<TextBlock Text="{Binding WhatEverYouWant StringFormat='It is: \{0\}'}"/>
</TextBox.ToolTip>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
它按预期工作.
小智 5
正如马特所说,工具提示可以包含任何内容,因此您可以在工具提示中绑定一个 TextBox.Text。
<StackPanel>
<TextBlock x:Name="MyTextBlock">Foo Bar</TextBlock>
<TextBox Text="{Binding ElementName=MyTextBlock, Path=Text, StringFormat='It is: \{0\}'}">
<TextBox.ToolTip>
<TextBlock>
<TextBlock.Text>
<Binding ElementName=MyTextBlock Path="Text" StringFormat="It is: {0}" />
</TextBlock.Text>
</TextBlock>
</TextBox.ToolTip>
</TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
即使您可以在工具提示内堆叠网格并根据需要布置文本。
hus*_*int -8
以下是一个冗长的解决方案,但它有效。
<StackPanel>
<TextBox Text="{Binding Path=., StringFormat='The answer is: {0}'}">
<TextBox.DataContext>
<sys:Int32>42</sys:Int32>
</TextBox.DataContext>
<TextBox.ToolTip>
<ToolTip Content="{Binding}" ContentStringFormat="{}The answer is: {0}" />
</TextBox.ToolTip>
</TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我更喜欢一种更简单的语法,就像我原来问题中的语法一样。
归档时间: |
|
查看次数: |
28166 次 |
最近记录: |