SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

Silverlightでのツリー表示(その1): 標準TreeViewコントロールとNetAdvantage XamDataTreeコントロール

  • このエントリーをはてなブックマークに追加

階層構造の表示

 ここまでは階層構造を持たない単一のコレクションオブジェクトのデータを設定し、表示しましたが、TreeViewコントロールやXamDataTreeコントロールは本来階層構造を表示するためのコントロールなので、いよいよ階層構造を表示してみましょう。

 ItemsControlは設定されたコレクションオブジェクトの個々のItemを表示するために、個々のItem表示用のコントロールを生成して表示に利用します。生成するコントロールは親となるコントロールによって異なります。

 例えばListBoxコントロールの場合はListBoxItemコントロール、ComboBoxの場合はComboBoxItem、そしてTreeViewコントロールの場合はTreeViewItemというコントロールが生成されます。

 つまり、最終的にはItemsSourceに設定されたオブジェクトの要素の数だけTreeViewItemコントロールが追加されることになります。

 TreeViewItemコントロールもコンテンツモデルのコントロールで、こちらはHeaderdItemsControlというコントロールの種類でオブジェクトのコレクションとヘッダーを取り扱うコントロールとなっています。

 そのため、TreeViewItemには通常のItemsControlと同じItemsプロパティ、そしてItemsSourceプロパティに加えてヘッダーを表示するためHeaderプロパティが用意されています。

 つまり、TreeViewコントロールは複数のTreeViewItemを保持することができて、コンテンツとして設定することで階層構造を表現することができます。

 それでは早速、コンテンツにTreeViewItemコントロールを利用して階層構造の表示を行ってみましょう。

LIST7:TreeViewItemコントロールを使った階層構造の表示(XAML)
<UserControl x:Class="_04_TreeViewItem.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

    <Grid x:Name="LayoutRoot" Background="White">
        
        <!-- TreeViewコントロール -->
        <sdk:TreeView Name="treeView1">
            <sdk:TreeViewItem Header="階層構造1">
                <sdk:TreeViewItem Header="階層構造2-1">
                    <sdk:TreeViewItem Header="階層構造3-1" />
                    <sdk:TreeViewItem Header="階層構造3-2" />
                </sdk:TreeViewItem>
                <sdk:TreeViewItem Header="階層構造2-2" />
                <sdk:TreeViewItem Header="階層構造2-3" />
                <sdk:TreeViewItem Header="階層構造2-4" />
            </sdk:TreeViewItem>
        </sdk:TreeView>
    </Grid>
</UserControl>

 実行結果は以下のとおりです。

 TreeViewItemは個々のデータ表示にContentPresenterを利用して表示しています。つまり、通常の文字だけではなく、各項目の表示をコントロールで表現できます。

 以下のようなXAMLを設定することで各項目をカスタマイズすることもできます。

LIST8:階層構造の各項目にコントロールを利用した表示(XAML)
<UserControl x:Class="_05_TreeViewItemUseControl.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

    <Grid x:Name="LayoutRoot" Background="White">
        <sdk:TreeView Name="treeView1">
            <sdk:TreeViewItem Header="テキストブロック">
                <TextBlock Text="テキストブロック1" />
                <TextBlock Text="テキストブロック2" />
                <TextBlock Text="テキストブロック3" />
            </sdk:TreeViewItem>
            <sdk:TreeViewItem Header="ボタンコントロール">
                <Button Content="ボタン1" />
                <Button Content="ボタン2" />
                <Button Content="ボタン3" />
            </sdk:TreeViewItem>
            <sdk:TreeViewItem Header="チェックボックスコントロール">
                <CheckBox Content="チェックボックス1"/>
                <CheckBox Content="チェックボックス2"/>
                <CheckBox Content="チェックボックス3"/>
            </sdk:TreeViewItem>
        </sdk:TreeView>
    </Grid>
</UserControl>

 実行結果は以下のとおりです。

次のページ
階層構造を持つデータの表示

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

森 博之(AZPower株式会社)(モリ ヒロユキ)

 Microsoft Azure、.NETテクノロジーを使用したWebサービスのプロダクトアーキテクト。他にも技術記事の執筆やトレーニング、セミナースピーカーを行っている。 Microsoft MVPをDeveloper Technologies、Visual Studio and Development Technologies、Windows Development、Client App Dev、.NET、Silverlight、Visual C#などのコン...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5772 2011/04/08 12:15

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング