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

Pac*_*chu 7 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>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试它时,我在工具提示上看到的是: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>
Run Code Online (Sandbox Code Playgroud)

屏幕刚刚卡住了.

Oua*_*rzy 5

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

<TextBlock Text="{Binding Description, StringFormat="Description : {0}{}"}">
Run Code Online (Sandbox Code Playgroud)

甚至不为我编译。

只需删除 " 和这样的空括号:

<TextBlock Text="{Binding Description, StringFormat=Description : {0}">
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)


Vad*_*nov 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>
Run Code Online (Sandbox Code Playgroud)

如果 StringFormat 以左大括号 { 开头,则 XAML 解析器要求您使用一对大括号 {} 对其进行转义。否则,解析器会感到困惑,因为标记扩展的语法中也使用了大括号。

详细信息可在{} 转义序列/标记扩展的 XAML 文档中找到。

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