雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

LockablePivot

アフターフォロー記事は終わりましたが、まだ扱いきれてないものや説明を飛ばしたものも多くありますので、ここからは落穂拾いに入りたいと思います。
まず初回は 24 日目に紹介した Toolkit のコントロールから LockablePivot をもう少し細かく見てみます。

Pivot の横フリックを抑制する

Pivot は横フリックでページを切り替え可能なレイアウトコントロールですが、コントロールの特性上、ページアイテムを横フリックしてもページの切り替えが発生する様になっています。
従って、ページアイテム内に横スクロールが必要なコントロールを置く事が出来ません。
これは Windows Phone デザインガイドライン上にも明記されているため、「お作法に従え」で F/A なのですが、 Pivot 内に Map のコントロールが置けないのは地味に痛いです。
# 先日のハッカソンでもこの件で迷っている方がいらっしゃいました。
# この件は、忍さん曰く「そう云う画面構成をしないのが Windows Phone としては正解」だそうです。
# ……まぁそうなのですが、やはりそう云う構成にしたい場合はあります。あるのだから仕方ない。。。
と云う事で、一応ひとつの回避策として利用出来るのが LockablePivot です。
LockablePivot はフラグを立てる事で Pivot 上(ヘッダも含みます)での横フリックイベントのキャッチを抑制する事が出来るコントロールです。
# この辺り、正直ガイドライン違反な感も少々ありますが、 Toolkit に含まれるコントロールなので Microsoft 的にはアリと云う判断なのだと思います。(と云うかそう思う事にしましょう)

LockablePivot の利用方法

基本的には標準コントロールの Pivot と一緒です。

<toolkit:LockablePivot Title="Pivot Title">
  <controls:PivotItem Header="item1">
    <Grid>
      <maps:Map />
    </Grid>
  </controls:PivotItem>
  <controls:PivotItem Header="item2">
    <Grid />
  </controls:PivotItem>
</toolkit:LockablePivot>

後は、 LockablePivot の IsLocked プロパティに true を設定すると、 Pivot がロックされて横フリックしても動かなくなります。