繁体   English   中英

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

[英]WPF - ToolTip with 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>

屏幕刚刚卡住了。

我不知道你使用的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 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 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM