糟糕的WPF性能!

糟糕的WPF性能!,wpf,performance,Wpf,Performance,为什么我在悬停一些链接时使用了超过80%的CPU? 正如你在我上传的视频中看到的: 当我将鼠标移到链接上时,CPU将变为>80%CPU 我对这些项目的风格如下 <Style x:Key="LinkStyle" TargetType="{x:Type Hyperlink}"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True">

为什么我在悬停一些链接时使用了超过80%的CPU? 正如你在我上传的视频中看到的: 当我将鼠标移到链接上时,CPU将变为>80%CPU

我对这些项目的风格如下

    <Style x:Key="LinkStyle" TargetType="{x:Type Hyperlink}">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Foreground" Value="White" />
            </Trigger>
        </Style.Triggers>
        <Setter Property="TextBlock.TextDecorations" Value="{x:Null}" />
        <Setter Property="Foreground" Value="#FFDDDDDD"/>
        <Setter Property="Cursor" Value="Arrow" />
    </Style>    


为什么?

不必奇怪-。PDC09提供的功能非常出色,您将能够快速启动并运行

超链接是你自己的类型,对吗


我尝试将您的样式应用于文本块,但无法使CPU超过5%,因此,当其中一个属性发生更改时,超级链接内部可能发生了一些问题。尝试隔离导致CPU峰值的属性。

我的应用程序中的样式也有类似问题。在看不到UI的整个xaml文件的情况下,我会询问您是否使用了位图效果,因为这些会导致CPU性能上升。如果是,我建议不要使用它们,而是使用优化的效果选项,或者使用WPF中的着色器库支持来应用您正在寻找的任何效果

在我的例子中,我有一个具有阴影位图效果的元素,并且能够将其切换到阴影效果,获得了所需的效果,并且CPU没有被命中。当我使用位图效果时,它实际上是重画效果所在的整个矩形区域,因此当我使用闪烁的光标时,它会从应用了位图效果的父控件中重画每个子控件


如果你没有使用任何效果,我建议你看看你的视觉树,看看它是否有大量的UI元素,或者最后,有时是最被过度关注的,检查您为正在显示的超链接类型的过度状态定义的触发器和/或事件可能是挂在那里导致某些问题的原因。

所以您不希望当前应用程序使用所有可用的CPU?前景颜色切换在我看来很平滑。您是否尝试过将CPU占用>50%并查看性能/体验是否下降?在WPF中更改文本颜色时,80%的CPU真的正常吗?是的,大约3秒钟后,颜色变化滞后。你在XP上看到了吗?你的显卡性能如何。回答你最初的问题,这绝对不正常,有一些奇怪的事情正在发生