Udostępnij za pośrednictwem


【Blen道】ListViewと StackPanel

#win8dev_jp #wpdev_jp

週末はちょっと調子よくなくてまだ引っ張ってる高橋です。

モダンスタイルアプリケーションをBlendで作り上げてく(テク)Blen道。

image

さて、Grid の続きを書こうかと思ったのですが、会社帰りにいろいろ思案してると、パネルとしてのStackPanel をFeature すべきかな?とひらめく。で、使う場面を考えたときに、時々ListViewにしようかStackPanelにしようか?なんて考えたことがあったことを思い出した。

StackPanel とリスト

【Blen道】パネルを知る で書いたようにStackPanel は縦、ないし横にアイテムを並べくれるパネル。

image

これ、縦に並べて中に入れるものを横長にするとまるでリストのようになる。

ListViewかStackPanelか

 

さてどっちを使うか。見てわかるし誰でもわかるが、

  • データを表示するならListViewしかない。
  • いろんなスタイルのコンテンツを表示するならStackだ。
  • コンテンツの中身の一部をクリックしたりするならStackだ
    ListViewは1レコードで1つのアイテムとして扱ってしまう

まぁ、見せるアイテムなのか、選ぶアイテムなのか? 型が一緒か・様々か、で選び方が変わる。

  ListView StackPanel
データソースとの連携 ×
決まったフォーム ×
アイテムのクリック 反応なし
縦横切り替え
さまざまなアイテム
アイテムの入れ替え

考えた割には当たり前すぎる結果でした。

 

では問題

では、このUIはどっちを使う?

表示されているアイテムはほとんど同じ型ですが、一部ちょっと違う。そしてアイテムとしてセレクトできるものもあれば、できないものもある。

image

もしかしたら、これは StackPanel と ListViewの組み合わせとしてやってるかも。

赤い部分がStackPanel で、緑の部分がListView。こうすれば思い通りのUIが作れると思う。

image

どちらかではなく、それぞれの特徴を把握しながら使う。パネルとコントロールの違いは、アイテム1つ1つを選択させるか(=機能を持たせるか)の違いになると思う。

… で、Blend ないじゃん、というお方。そうでした。ごめんなさい。でもこういった考え方がBlendに向かった時に役に立つのよ。(って逃げておくw)

TextBlockStyle.snippet