Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF-带有嵌入式TextBlock元素的禁用超链接上的工具提示_C#_Wpf_Xaml_Hyperlink_Tooltip - Fatal编程技术网

C# WPF-带有嵌入式TextBlock元素的禁用超链接上的工具提示

C# WPF-带有嵌入式TextBlock元素的禁用超链接上的工具提示,c#,wpf,xaml,hyperlink,tooltip,C#,Wpf,Xaml,Hyperlink,Tooltip,我正在尝试在WPF应用程序中的禁用超链接上添加工具提示。超链接具有用于文本参数绑定的嵌入式TextBlock元素。但是,由于某些原因,工具提示无法在带有嵌入式TextBlock元素的禁用超链接上工作。以下是一个例子: <Grid> <StackPanel> <TextBlock TextAlignment="Center" Margin="5"> <Hyperlink IsEnabled="False" T

我正在尝试在WPF应用程序中的禁用超链接上添加工具提示。超链接具有用于文本参数绑定的嵌入式TextBlock元素。但是,由于某些原因,工具提示无法在带有嵌入式TextBlock元素的禁用超链接上工作。以下是一个例子:

<Grid>
    <StackPanel>
        <TextBlock TextAlignment="Center" Margin="5">
            <Hyperlink IsEnabled="False" ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">Text</Hyperlink>
        </TextBlock>
        <TextBlock TextAlignment="Center" Margin="5">
            <Hyperlink IsEnabled="True" ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">
                <TextBlock Text="Text"/>
            </Hyperlink>
        </TextBlock>
        <TextBlock TextAlignment="Center" Margin="5">
            <Hyperlink IsEnabled="False" ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">
                <TextBlock Text="Text"/>
            </Hyperlink>
        </TextBlock>
    </StackPanel>
</Grid>

正文
这个XAML描述了三个超链接

  • 第一个超链接已禁用,但没有嵌入的TextBlock元素。工具提示显示得很好
  • 第二个超链接具有嵌入的TextBlock元素,但已启用。同样,工具提示显示良好
  • 第三个超链接被禁用,并且有一个嵌入的TextBlock元素,这正是我所需要的,但是工具提示没有显示
如何在带有嵌入文本块元素的禁用超链接上显示工具提示?我不想将工具提示添加到父TextBlock,因为我希望工具提示只出现在超链接文本上,而不是整个TextBlock区域


谢谢。

像这样将
工具提示
移动到
文本块

<TextBlock TextAlignment="Center" Margin="5" ToolTip="ToolTip">
    <Hyperlink IsEnabled="False" ToolTipService.ShowOnDisabled="True">
        <TextBlock Text="Text"/>
    </Hyperlink>
</TextBlock>

工具提示
移动到
文本块
如下

<TextBlock TextAlignment="Center" Margin="5" ToolTip="ToolTip">
    <Hyperlink IsEnabled="False" ToolTipService.ShowOnDisabled="True">
        <TextBlock Text="Text"/>
    </Hyperlink>
</TextBlock>

我知道这听起来很奇怪,但这似乎有效:

<TextBlock Text="Hello there" IsEnabled="False">
    <Hyperlink ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">
        <TextBlock Text="Text" />
    </Hyperlink>
</TextBlock>


i、 例如,您必须禁用父文本块。

我知道这听起来很奇怪,但这似乎有效:

<TextBlock Text="Hello there" IsEnabled="False">
    <Hyperlink ToolTip="ToolTip" ToolTipService.ShowOnDisabled="True">
        <TextBlock Text="Text" />
    </Hyperlink>
</TextBlock>


i、 例如,您必须禁用父文本块。

但这将使工具提示显示在整个文本块区域,而不仅仅是超链接的文本上。我提到我想避免这种情况,但这样会使工具提示显示在整个文本块区域,而不仅仅是超链接的文本上。我提到我想避免这种情况。+1是为了找到一个有趣的问题。我已经调查过了,不幸的是,我没能为你找到解决办法。如果您在此处没有找到解决方案,则可能值得在上注册这些详细信息。当未启用控件时,它不参与命中测试或聚焦,因此不会成为任何输入事件的源。要生成工具提示,控件需要命中可测试。+1用于查找有趣的问题。我已经调查过了,不幸的是,我没能为你找到解决办法。如果您在此处没有找到解决方案,则可能值得在上注册这些详细信息。当未启用控件时,它不参与命中测试或聚焦,因此不会成为任何输入事件的源。要生成工具提示,控件需要可命中测试。这回答了我最初的问题。但是,如果IsEnabled属性是数据绑定的,则这将不起作用。我发布了一个更具体的问题,并给出了详细的答案。在我的场景中,控件嵌套在禁用的父控件中。这回答了我最初的问题。但是,如果IsEnabled属性是数据绑定的,则这将不起作用。我发布了一个更具体的问题并给出了详细的答案。在我的场景中,控件嵌套在禁用的父控件中。