C# WPF-具有多重绑定的工具提示
我想在一个文本块中创建一个带有多重绑定的工具提示,但不管我怎么做,它都不起作用 以下是我到目前为止所做的尝试:C# WPF-具有多重绑定的工具提示,c#,wpf,tooltip,multibinding,C#,Wpf,Tooltip,Multibinding,我想在一个文本块中创建一个带有多重绑定的工具提示,但不管我怎么做,它都不起作用 以下是我到目前为止所做的尝试: <TextBlock Text="{Binding Description, StringFormat='Description : {0}{}'}"> <ToolTipService.ToolTip> <TextBlock> <TextBlock.Text>
<TextBlock Text="{Binding Description, StringFormat='Description : {0}{}'}">
<ToolTipService.ToolTip>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Description : {0}{1}{}">
<Binding Path="FirstDescription" />
<Binding Path="SecondDescription" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</ToolTipService.ToolTip>
</TextBlock>
但当我尝试时,我在工具提示上看到的是:System.Windows.Controls.TextBlock
当我在没有工具提示服务的情况下尝试时,只有工具提示,如下所示:
<TextBlock Text="{Binding Description, StringFormat='Description : {0}{}'}">
<ToolTip>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Description : {0}{1}{}">
<Binding Path="FirstDescription" />
<Binding Path="SecondDescription" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</ToolTip>
</TextBlock>
屏幕卡住了。删除空括号即可。下一个代码按预期工作:
<TextBlock Text="{Binding Description, StringFormat='Description : {0}'}">
<ToolTipService.ToolTip>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Description : {0}{1}">
<Binding Path="FirstDescription" />
<Binding Path="SecondDescription" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</ToolTipService.ToolTip>
</TextBlock>
如果StringFormat以左大括号{开头,XAML解析器要求您使用一对大括号{}对其进行转义。否则,解析器会感到困惑,因为大括号也用于标记扩展的语法中
有关详细信息,请参见的XAML文档
此外,不能在内联绑定中使用双引号,但可以使用单引号。我不知道您使用的是哪个版本,但是:
<TextBlock Text="{Binding Description, StringFormat="Description : {0}{}"}">
甚至没有为我编译
只需删除“和空括号,如下所示:
<TextBlock Text="{Binding Description, StringFormat=Description : {0}">
如果您想要,也可以这样写:
我尝试了以下代码,效果非常好:
<TextBlock Margin="20" Foreground="Black" FontSize="20" FontFamily="Century Gothic" Text="{Binding Name1}">
<TextBlock.ToolTip>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="MultiBinded Tooltip : {0}{1}">
<Binding Path="Name1"/>
<Binding Path="Name2"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</TextBlock.ToolTip>
</TextBlock>
我已经试过了,但在工具提示中我只能看到:System.Windows.Controls。TextBlock@Pachu你能给我看一下代码吗?我想你需要实现overrideTostring()方法。@Pachu你有多绑定工具提示的方法吗?@Pachu好的,我回答了你关于方括号和添加整个训练代码的问题。使用后你还有什么问题吗?我有,我在工具提示中看到以下文本:“System.Windows.Controls.TextBlock”而不是我想要的文本。抱歉,我无法重现您的问题。我删除了空括号,现在代码工作正常。您使用的是什么版本的.net framework?您的示例是否是样式/模板的一部分?.net 4.5,是的,它是数据模板的一部分我猜是“System.Windows.Controls.TextBlock”是工具提示中实际绑定的内容。填充说明、第一个说明和第二个说明的代码是什么?请删除空括号,以确保。然后,正如我所说,您可能在如何填充绑定方面遇到问题,它应该工作。它显示“System.Windows.Controls.TextBlock”这可能意味着您在代码隐藏中编写了Description=newtextblock()之类的代码?
<TextBlock Margin="20" Foreground="Black" FontSize="20" FontFamily="Century Gothic" Text="{Binding Name1}">
<TextBlock.ToolTip>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="MultiBinded Tooltip : {0}{1}">
<Binding Path="Name1"/>
<Binding Path="Name2"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</TextBlock.ToolTip>
</TextBlock>