我有一个带有一组按钮和标签的UserControl。 宽度1000px高度70px。
其中最多50个显示在ListBox(或我同时尝试过的ListView)中。在我的笔记本上滚动绝对没有问题但是目标硬件是在Atom Z670(1.5GHz,1核心)上运行Win7的平板电脑,带有Intel GMA600 @ 400MHz。
在这款平板电脑上滚动几乎是不可能的 - 卡住了。 当我一次显示较少的控件(较高的高度)或仅显示其中一部分(减少ListView或BoxView宽度)时,它会变得更好。
我已经在互联网上阅读了一些关于WPF和滚动的文章,但它们都没有真正有所作为。它们似乎主要指向更多的元素。
这是否意味着此硬件无法在全屏宽度和高度上执行平滑滚动,还是有任何其他方法可以改善滚动性能?
CanContentScroll不会影响此效果(http://stackoverflow.com/questions/1033841/is-it-possible-to-implement-smooth-scroll-in-a-wpf-listview)
答案 0 :(得分:0)
如果不虚拟化,自动化可以拧大视图树。所以试着删除它。
/// <summary>
/// List View without Automation
/// Fixes the bug with tablet and touch screens
/// </summary>
public class CustomListView : ListView
{
protected override AutomationPeer OnCreateAutomationPeer()
{
System.Diagnostics.Debug.Print("Automation Again");
return null;
}
protected override DependencyObject GetContainerForItemOverride()
{
return new NoAutomatioListViewItem();
}
}
class NoAutomatioListViewItem : ListViewItem
{
protected override AutomationPeer OnCreateAutomationPeer()
{
return null;
}
}
如果不是,自动化将为每个项目创建整个视图树,并为一个大的列表创建(15k项目已经足以看到已经存在的问题),它将会出现问题。