在HyperLink上投影效果

时间:2012-06-19 18:01:20

标签: c# wpf xaml effects

我似乎无法找到如何向流文档中的超链接添加投影。由于HyperLink不是UIElement,因此它没有Effect属性(我的所有Google搜索引导我使用DropShadowEffect)。它确实有一个TextEffects集合,但我似乎无法弄清楚如何用它创建一个投影。最终我要做的是在背景画笔中添加一个阴影,而不是文本本身。

我的要求非常模糊,我只需要使焦点外观看起来更好(即标签焦点和键盘焦点,而不是鼠标悬停),我认为一个轻微的投影可以解决问题,但我愿意其他建议。

(我没有足够的代表来上传截图 grr 所以这是模拟)

这里有一个HyperLink

我想在灰色部分(我应用中的淡蓝色)周围添加阴影,而不是文本(如前所述)。

1 个答案:

答案 0 :(得分:1)

我很确定你不能在每个内联的基础上做到这一点。 WPF提供效果的方式是将它们批量应用于可视化树中的单个对象。像超链接这样的内容元素都被合并到其父级中的单个可视元素中(FlowDocumentReader或类似的)。

FlowDocument控件可以使用BlockUIContainer块内容元素或InlineUIContainer内联内容元素来托管子视觉元素。您可以使用它将DropShadow应用于单个超链接,如下所示:

<FlowDocument>
        <Paragraph>
            <Run Text="This is a" />
            <InlineUIContainer>
                <TextBlock Background="#FFCDCDCD">
                    <TextBlock.Effect>
                        <DropShadowEffect ShadowDepth="3" Color="#FFC9C9C9" />
                    </TextBlock.Effect>
                    <Hyperlink><Run Text="hyperlink" /></Hyperlink>
                </TextBlock>
            </InlineUIContainer>
        </Paragraph>
</FlowDocument>