【问题标题】:Slow performance with ListView in Windows XPWindows XP 中 ListView 的性能下降
【发布时间】:2012-05-14 18:35:58
【问题描述】:

所以我正在设计的应用程序使用一个非常简单的列表视图,其中包含复选框来检查列表中的某些项目。它在我的装有 Windows 7 的机器上运行得非常好,但是当在装有 Windows XP 的另一台机器上运行它时,鼠标在复选框周围悬停时变得非常缓慢且不稳定。我写了一个应用程序,它纯粹是一个带有复选框的列表视图,项目中没有任何其他内容,它仍然做同样的事情。这有什么问题吗……?

<ListView Name="lstView" ItemsSource="{Binding List}"  HorizontalContentAlignment="Stretch" SelectionMode="Extended">
    <ListView.View>
        <GridView >
            <GridView.Columns>
                <GridViewColumn>
                    <GridViewColumnHeader Content="Dummy Column"/>
                </GridViewColumn>
                <GridViewColumn>
                    <GridViewColumnHeader Content="Dummy Column2"/>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox IsChecked="{Binding Bool}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>

该应用程序在 XP 机器上运行良好,但在将鼠标悬停在复选框上时会变慢,我不确定为什么。有没有人经历过这种情况或知道是什么原因导致它/简单的解决方案?

【问题讨论】:

  • 如果您在 XP 上使用 .NET 4.0 / 3.5 重新构建您的应用程序,然后在那里运行它会发生什么?
  • 我想我可以尝试从 XP 构建它,不过要等到明天再告诉你。

标签: wpf xaml listview windows-xp


【解决方案1】:

在复选框的样式/模板中,您是使用情节提要或 VSM 为悬停效果设置动画,还是使用触发器替换画笔?如果您正在为它们设置动画,请尝试只交换画笔。出于某种原因,XP 并不总是能很好地处理 WPF 动画。

【讨论】:

  • 我没有做任何特别的事情,从字面上看,您可以在项目中使用这个 xaml 代码而无需其他任何东西,它在其他相当不错的 XP 机器上运行缓慢。
  • 通过在鼠标悬停时为边框或网格的背景设置动画来测试它,看看是否遇到类似问题。在我的上一个项目中,我们部署了一个单独的 XP 皮肤,该皮肤由于性能问题而删除了所有内置动画。
  • 删除控件内置动画的简单方法是什么?
  • 通过更改皮肤中的 ControlTemplate。此外,您可能想看看这个:msdn.microsoft.com/en-us/library/… 有时,客户端的机器性能绝对会下降,运行它通常会显示 0 或 1。这不是最好的测试,但如果硬件应该能够推送图形,但出于某种原因不能。
猜你喜欢
  • 2011-04-18
  • 1970-01-01
  • 2014-05-19
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多