当控件被聚焦时,如何持续显示工具提示?

8
我该如何在控件获得焦点时持续显示工具提示?我尝试了很多方法,但似乎都没有用。目前我有以下类似的代码:
    <TextBox x:Name="textBox" Width="200">
        <TextBox.ToolTip>
            <ToolTip StaysOpen="{Binding IsKeyboardFocused, ElementName=textBox}" IsOpen="{Binding IsKeyboardFocused, ElementName=textBox}">
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
            </ToolTip>
        </TextBox.ToolTip>
    </TextBox>

看起来应该非常简单,但它却没有按照预期工作。为什么呢?我将提示框的IsOpen属性绑定到文本框的IsKeyboardFocused属性。因此,在提示框聚焦时,它应该显示。为什么它没有显示呢?


1
你看过这个 Stack Overflow 的问题吗:https://dev59.com/nXNA5IYBdhLWcg3wmfK5? - Tim Schmelter
1个回答

12

您可以像这样使用 Popup 替代 ToolTip

<Grid>
    <StackPanel>
        <TextBox x:Name="textBox1" Width="200" Height="20"/>
        <TextBox x:Name="textBox2" Width="200" Height="20"/>
    </StackPanel>
    <Popup PlacementTarget="{Binding ElementName=textBox1}" IsOpen="{Binding IsKeyboardFocused, ElementName=textBox1, Mode=OneWay}">
        <TextBlock Background="White">
            <TextBlock.Text>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</TextBlock.Text>
        </TextBlock>
    </Popup>
</Grid>

然后将其样式设置成类似于工具提示的外观。


如何将其样式设置为类似工具提示的外观? - marczellm
你可以使用弹出窗口代替工具提示,除非有特殊原因,否则没有不使用工具提示的理由(除非你解释了这个原因,否则这不是对“如何持续显示工具提示”的问题的回答,这个问题隐含地询问为什么StaysOpen属性不能按预期工作--似乎在这个属性和ToolTipService.ShowDuration之间存在一些干扰)。 - mins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接