atelier:mitsuba

i love UI/UX, Blend, XAML, Behavior, P5, oF, Web, Tangible Bits and Physical computing. なにかあればお気軽にご連絡ください。atelier@c-mitsuba.com

その47:WPFでSampleDataSetで作ったListBoxを横スクロールにして、選択時の表現をカスタマイズするまで

1.まっさらなWPFプロジェクトがあります

f:id:c-mitsuba:20150327180853p:plain

2.SampleDataSetを使って、画像を文字のプロパティを持ったCollectionをつくります。

f:id:c-mitsuba:20150327180859p:plain

3.Collectionをデザインビューにドラッグすると、いいかんじにListBoxが生成されます。

f:id:c-mitsuba:20150327180902p:plain

4.右クリックして、追加テンプレートの編集 -> アイテムレイアウトの編集 ->コピーして編集をクリック

f:id:c-mitsuba:20150327180906p:plain

5.スタイル名はとりあえずこのままで。

f:id:c-mitsuba:20150327180911p:plain

6.すると、Itemが入った体のVirtualizingStackPanelが現れるので、こいつのOrientationプロパティをHorizontalに。

f:id:c-mitsuba:20150327180921p:plain

7.実行すると横になりました。

f:id:c-mitsuba:20150327180927p:plain

8.次に選択時の表現を変更してみましょう。

追加テンプレートの編集 -> 生成されたアイテムコンテナーの編集 -> コピーして編集

f:id:c-mitsuba:20150327181001p:plain

9.するとContentPresenterが現れます。この中に文字とか画像がホストされています。

f:id:c-mitsuba:20150327181005p:plain

10.選択時の表現はWPFならではのトリガーで管理されています。他のXAMLプラットフォームならVSMですね。

初期値では、マウスが乗っているとき、選択されてるけど変更できないとき(?)、選択されている時の3ステートがあります。

変更するには、それぞれのステートをクリックして、プロパティを変更します。

f:id:c-mitsuba:20150327181009p:plain

11.今回は選択時の表現を変更したいので、3つめのステートをクリックします。

f:id:c-mitsuba:20150327181018p:plain

12.その状態で、[Border]Bgの背景色を適当に変えてみましょう。

f:id:c-mitsuba:20150327181022p:plain

13.実行すると、選択時は変更した色に、OnMouseされている右のアイテムは標準の表現になっています。

f:id:c-mitsuba:20150327181024p:plain

 

WPFではWindows StoreのようなチェックマークはListBoxには付きませんが、こうしたものを付けたい場合は、手順9のところで、チェックマークのパスコントロールなどを置いて、手順12のところで、チェックマークの色を変更するなど、すれば、Windows Storeのような表現に近づきます。