2012-01-05 3 views
1

ボタンとラベルのセットを持つUserControlがあります。 幅1000px高さ70px。タブレットデバイスのUserControlスクロールパフォーマンス

ListBox(またはListView私は両方を試してみました)に表示される場所は最大50です。ノートブックのスクロールでは問題はありませんが、ターゲットハードウェアはIntel GMA600 @ 400MHzのAtom Z670(1.5GHz、1コア)のWin7を実行しているタブレットです。

このタブレットでは、スクロールはほとんど不可能です。 一度に表示するコントロールの高さが高くなるか、ListViewまたはBoxViewの幅が小さくなるようにコントロールの一部だけを表示すると、表示が良くなります。

私はすでにインターネット上でWPFとスクロールに関するいくつかの論文を読んでいますが、実際には違いはありません。彼らは主により多くの要素を指しているようです。

これは、このハードウェアがフルスクリーンの幅と高さで滑らかなスクロールを実行できないということですか、スクロールのパフォーマンスを向上させるために何かできることはありますか?

CanContentScrollはこの効果には影響を与えません(http://stackoverflow.com/questions/1033841/is-it-possible-to-implement-smooth-scroll-in-a-wpf-listview)

+2

リストボックスをカスタマイズしましたか?お持ちの場合は、IsVirtualizingプロパティをtrueに設定してみてください。http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel.isvirtualizing.aspx既定のテンプレートの既定値はIsVirtualizingですが、カスタムテンプレートを使用している場合は、明示的に値を設定する必要があります。 – Josh

+0

ListViewとListBoxの両方がシステムデフォルトでした...私はCanContendScroll tr​​ue/falseで実験しましたが、実際の違いはありませんでした...反応は遅く、「滑らか」です。ハードウェアが問題であると思うか、それとも私のせいでなければならないと思いますか? – phhe

答えて

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; 
    } 
} 

ない場合は自動化は、それがslugishます(15kの項目がすでに問題を見るために十分である)各項目について、大きなリストについては、全体の表示ツリーを作成します。

関連する問題