<< 【MEF】(仮)リフレクション べース プログラミング モデル。 | main | 【Windows Azure】Windows Azureはじめたいんですが・・・ >>

【WPF】ListBoxからCheckedListBoxを作成した時のフォーカス処理

JUGEMテーマ:コンピュータ

CheckedListBox 
Source and Project

以前、作成したCheckedListBoxに思わぬ挙動をすることがわかったので修正版を作成してみた。

【WPF】CheckedListBoxをカスタムコントロールで作成する。
http://pro.art55.jp/?eid=1069565

上記のURLでは下記のように書いていました。

    <Style TargetType="{x:Type local:MissCheckedListBox}"
           BasedOn="{StaticResource {x:Type ListBox}}">
        <Setter Property="SelectionMode" Value="Multiple" />
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                                <CheckBox Focusable="False"
                                            SnapsToDevicePixels="True"
                                            Foreground="{TemplateBinding Foreground}"
                                            FontFamily="{TemplateBinding FontFamily}"
                                            FontSize="{TemplateBinding FontSize}"
                                            FontStyle="{TemplateBinding FontStyle}"
                                            FontWeight="{TemplateBinding FontWeight}"
                                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                            IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
                                    <ContentPresenter/>
                                </CheckBox>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>
    </Style>

注目するところはCheckBoxにフォーカスが移動しないようにしていました。
これを下記にようにかきかえました。

 <Style TargetType="{x:Type local:CheckedListBox}"
           BasedOn="{StaticResource {x:Type ListBox}}">
        <Setter Property="SelectionMode" Value="Multiple" />
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="Focusable" Value="False" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                                <CheckBox Focusable="True"
                                            SnapsToDevicePixels="True"
                                            Foreground="{TemplateBinding Foreground}"
                                            FontFamily="{TemplateBinding FontFamily}"
                                            FontSize="{TemplateBinding FontSize}"
                                            FontStyle="{TemplateBinding FontStyle}"
                                            FontWeight="{TemplateBinding FontWeight}"
                                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                            IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
                                    <ContentPresenter/>
                                </CheckBox>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>
    </Style>

こっちはListBoxItemにフォーカス移動がないようにして、CheckBoxにフォーカス移動可能にしています。この微妙な違いは、フォーカス移動に微妙な違いをもたらします。

どう違うかは実際に実行してみて試してみてください。上はクリックするとフォーカスが移動しますが、下は移動しません。

Source and Project


コメント
修正後ソースの2つめの赤字行がずれてますよ。
  • toyo
  • 2010/05/26 9:56 AM
コメントする









この記事のトラックバックURL
トラックバック
calendar
1234567
891011121314
15161718192021
22232425262728
293031    
<< August 2010 >>
あわせて読みたい
あわせて読みたいブログパーツ
selected entries
categories
archives
recent comment
recent trackback
recommend
キャット・シッターの君に。
キャット・シッターの君に。 (JUGEMレビュー »)
喜多嶋 隆
私のイラストレータデビュー本です。
recommend
ビジュアライジング・データ ―Processingによる情報視覚化手法
ビジュアライジング・データ ―Processingによる情報視覚化手法 (JUGEMレビュー »)
Ben Fry
javaぽい言語Processingを用いたビジュアライジングデータ。タイトルの通りいかにデータを視覚化するかというところを解説した本、手法やプロセスに対して丁寧でかつ具体的な例を挙げているのでわかりやすく、また応用が利きます。すばらしい本です。
recommend
recommend
recommend
recommend
recommend
recommend
Essential .NET ― 共通言語ランタイムの本質
Essential .NET ― 共通言語ランタイムの本質 (JUGEMレビュー »)
ドン・ボックス,クリス・セルズ,Don Box,Chris Sells,吉松 史彰
recommend
recommend
recommend
Design rule index―デザイン、新・100の法則
Design rule index―デザイン、新・100の法則 (JUGEMレビュー »)
William Lidwell,Kritina Holden,Jill Butler
ユーザインターフェイス、ユーザビリティなどを考えたいならこの本をヒントにしてみるのも良いかと思います。
recommend
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
リファクタリング―プログラムの体質改善テクニック (Object Technology Series) (JUGEMレビュー »)
マーチン ファウラー,Martin Fowler,児玉 公信,平澤 章,友野 晶夫,梅沢 真史
Javaで書かれていますが、良本です。言語を覚えたら、まずこの本を読んでみましょう。
recommend
集合知プログラミング
集合知プログラミング (JUGEMレビュー »)
Toby Segaran
・・・挫折中の一本。
recommend
C#ではじめるWebサービスプログラミング
C#ではじめるWebサービスプログラミング (JUGEMレビュー »)
山崎 秀,笠原 一浩
動くモノが作れるから楽しい、この本で実現しましょう!
recommend
C#クックブック 第3版
C#クックブック 第3版 (JUGEMレビュー »)
Jay Hilyard,Stephen Teilhet
C#2.0からの移行を考えているならこの本がお勧めです。
recommend
LINQテクノロジ入門~Microsoft Visual Studio 2008による新たなクエリ構築技法~ (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ) (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ)
LINQテクノロジ入門~Microsoft Visual Studio 2008による新たなクエリ構築技法~ (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ) (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ) (JUGEMレビュー »)
赤間信幸
LINQ最強の入門本です。LINQの処理をイメージをわかりやすく解説されています。また、著者の赤間さんはわかりやすい解説をされることで超有名です。
recommend
Pro LINQ: Language Integrated Query in C# 2008 (Windows.Net)
Pro LINQ: Language Integrated Query in C# 2008 (Windows.Net) (JUGEMレビュー »)
Jr. Rattz Joseph C.
LINQをしっかり学びたい方にお勧めします。
recommend
recommend
WPF Recipes in C# 2008: A Problem-Solution Approach (Expert's Voice in .Net)
WPF Recipes in C# 2008: A Problem-Solution Approach (Expert's Voice in .Net) (JUGEMレビュー »)
Sam Noble,Sam Bourton,Allen Jones
WPFの基礎を一通り学習したら、この本を手に取りましょう。WPFのHowToやDeepな情報を得ることが出来ます。かなりお勧めです。
(注意:サンプルコードのレイアウト設計は間違ってるので注意です)
links
profile
search this site.
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM
JUGEMのブログカスタマイズ講座