WPF - 具有多重绑定的工具提示

时间:2015-12-29 09:12:38

标签: c# wpf tooltip multibinding

我想在文本块中创建一个带有多重绑定的工具提示,但无论我尝试它都不起作用。

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

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

当我尝试没有tooltipservice时,只有工具提示,如下:

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

屏幕卡住了。

3 个答案:

答案 0 :(得分:4)

我不知道您正在使用的VS版本,但是:

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

甚至不为我编译。

只需删除&#34;和那样的空括号:

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

如果您想要&#34;:

,也可以这样写
<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>

答案 1 :(得分:0)

只需删除空括号即可。下一代码按预期工作:

<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解析器要求您使用一对大括号{}来转义它。否则解析器会感到困惑,因为在标记扩展的语法中也使用了大括号。

详细信息可在{} Escape Sequence / Markup Extension的XAML文档中找到。

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

答案 2 :(得分: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>