WPF-带多绑定的工具提示

本文关键字:工具提示 绑定 WPF- | 更新日期: 2023-09-27 18:28:30

我想在文本块内制作一个带有多绑定的工具提示,但无论我尝试什么都不起作用。

以下是我迄今为止所尝试的:

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

屏幕卡住了。

WPF-带多绑定的工具提示

我不知道你使用的是哪个VS版本,但:

<TextBlock Text="{Binding Description, StringFormat="Description : {0}{}"}">

甚至不为我编译。

只需删除"和类似的空括号:

<TextBlock Text="{Binding Description, StringFormat=Description : {0}">

如果你想要":",你也可以这样写

<TextBlock>
    <TextBlock.Text>
        <Binding Path="Description" StringFormat="Description : {0}" />
    </TextBlock.Text>
    <ToolTipService.ToolTip>
        <TextBlock>
                    <TextBlock.Text>
                        <MultiBinding StringFormat="Description : {0}{1}">
                            <Binding Path="FirstDescription" />
                            <Binding Path="SecondDescription" />
                        </MultiBinding>
                    </TextBlock.Text>
        </TextBlock>
    </ToolTipService.ToolTip>
</TextBlock>

我尝试了以下代码,效果很好:

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

只需删除空括号。下一个代码工作如预期:

<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文档中可以找到详细信息。

此外,您不能在内联绑定中使用双引号,但可以使用单引号。