2012-05-14 74 views
1

所以我设计的应用程序使用了一个非常简单的列表视图,其中包含复选框来检查列表中的某些项目。它在我的机器上运行Windows 7时运行得非常好,但是当它运行在不同的Windows XP系统上时,鼠标在复选框周围悬停时会变得非常缓慢且波涛汹涌。我写了一个应用程序,它纯粹是一个带有复选框的列表视图,在项目中绝对没有其他任何东西,它仍然执行相同的操作。这有什么不对吗?在Windows XP中使用ListView的性能下降

<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的计算机上,将鼠标悬停在复选框的时候,我真的不知道为什么只是变得缓慢。任何人都曾经历过这个或知道是什么导致它/简单的解决方案?

+0

如果您在XP 4.0的.NET 4.0/3.5中重建应用程序,然后在那里运行,会发生什么情况? –

+0

我可以尝试从XP构建它,我想,要等到明天了,我会让你知道的。 –

回答

1

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

+0

我没有做任何特别的事情,从字面上你可以把这个xaml代码放在项目中没有其他任何东西,它运行缓慢,否则合理体面的XP机器。 –

+0

通过在mouseover上动画显示边框或网格的背景来测试它,看看是否会出现类似的问题。对于我的最后一个项目,我们部署了一个单独的XP皮肤,因为性能问题而删除了每个内置动画。 – VLTII

+1

什么是删除控件的内置动画的简单方法? –