2011-12-13 9 views
4

このようにListBoxの既定のスタイルを編集して知っていれば、私はListBoxの最後にButtonを持つことができます。ListBoxの最後に仮想化を失うことなくボタンを追加しますか?

<ScrollViewer x:Name="ScrollViewer" ...> 
    <StackPanel> 
     <ItemsPresenter /> 
     <Button /> 
    </StackPanel> 
</ScrollViewer> 

しかし、これを実行することはListBoxの仮想化とレンダリング時間が長くなり、本当に壊れます。

私はのだと思うことができますすべての

  1. はダミー項目を作成し、 の私のアイテムコレクションのviewmodelの末尾に追加し、ダミーオブジェクトにVisibility性質を持っているButtonGridVisibilityと呼ばし、 Visibility.Visibleに設定します。
  2. 私のListBoxItemTemplateには、2つのGridsがあります。 1つは の通常のアイテムレイアウトを表示し、もう1つはを表示します。Buttonをロードします。 VisibilityButtonGridVisibilityに基づいて切り替えます。

これはうまくいくかもしれませんが、もっと簡単な方法があれば迷っていますか?

答えて

3

で見つけることができる私は、これは古い記事です知っているが、場合には、一部の人々は、この時につまずく:

LongListSelector制御available out of the box in WP8または一部としてですこのシナリオを非常にきれいにサポートするWP7のWindows Phone Toolkitの最後の項目の後(または最初の項目の前)に特定のコンテンツを追加する場合は、コントロールのListFooterまたはListHeaderを設定するだけです。あなたは任意のコンテンツを内部に置くことができ、このコンテンツは残りのアイテムと共にそれに応じてスクロールされます。

だから、WP7のために、これは次のようになります。

<toolkit:LongListSelector ItemsSource="{Binding Items}"> 
    <toolkit:LongListSelector.ListFooter> 
     <Grid> 
      <Button /> 
     </Grid> 
    </toolkit:LongListSelector.ListFooter> 
</toolkit:LongListSelector> 

toolkitxmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

+0

ああ...私はこれを1年前に知りたかったと思う!ありがとうKarel! –

1

最近、このシナリオに役立つさまざまな機能が追加されています。そのうちの1つは、ScrollViewerで視覚状態グループ「Horizo​​ntalCompression」と「VerticalCompression」を追加した追加のビジュアル状態の追加です。これらを利用してCurrentStateChangingイベントにフックすることで、必要に応じてより多くのアイテムを読み込むことができます。これを実装する方法の

完全な詳細はSilverlight for Windows Phone Performance Team Blog.

+0

のおかげであり、実際に私はしかし、私は 'ListBox'が自動的によりロードするようにしたくない、このことを認識していますデータが最後までスクロールすると私は、ボタンを持っていることが、ユーザーにはっきりしていると思います。 –

関連する問題