TreeView コントロールは、折りたたみ可能なノードを使用して階層構造に情報を表示する方法を提供します。 このトピックでは、 TreeView コントロールと TreeViewItem コントロールについて説明し、その使用方法の簡単な例を示します。
TreeView とは
TreeViewはItemsControlで、TreeViewItemコントロールを使用して項目を入れ子にします。 次の例では、 TreeViewを作成します。
<TreeView Name="myTreeViewEvent" >
<TreeViewItem Header="Employee1" IsSelected="True">
<TreeViewItem Header="Jesper Aaberg"/>
<TreeViewItem Header="Employee Number">
<TreeViewItem Header="12345"/>
</TreeViewItem>
<TreeViewItem Header="Work Days">
<TreeViewItem Header="Monday"/>
<TreeViewItem Header="Tuesday"/>
<TreeViewItem Header="Thursday"/>
</TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="Employee2">
<TreeViewItem Header="Dominik Paiha"/>
<TreeViewItem Header="Employee Number">
<TreeViewItem Header="98765"/>
</TreeViewItem>
<TreeViewItem Header="Work Days">
<TreeViewItem Header="Tuesday"/>
<TreeViewItem Header="Wednesday"/>
<TreeViewItem Header="Friday"/>
</TreeViewItem>
</TreeViewItem>
</TreeView>
TreeView の作成
TreeView コントロールには、TreeViewItem コントロールの階層が含まれています。 TreeViewItem コントロールは、HeaderedItemsControlとHeader コレクションを持つItemsです。
拡張アプリケーション マークアップ言語 (XAML) を使用してTreeViewを定義する場合は、Header コントロールのTreeViewItemコンテンツとそのコレクションを構成する項目を明示的に定義できます。 前の図は、この方法を示しています。
データ ソースとして ItemsSource を指定し、 HeaderTemplate と ItemTemplate を指定して TreeViewItem コンテンツを定義することもできます。
TreeViewItem コントロールのレイアウトを定義するには、HierarchicalDataTemplate オブジェクトを使用することもできます。 詳細と例については、「 SelectedValue、SelectedValuePath、SelectedItem の使用」を参照してください。
項目がTreeViewItem コントロールでない場合は、TreeViewItem コントロールが表示されるときに、TreeView コントロールで自動的に囲まれます。
TreeViewItem の展開と折りたたみ
ユーザーが TreeViewItemを展開すると、 IsExpanded プロパティは true
に設定されます。 また、TreeViewItem プロパティを IsExpanded (展開) またはtrue
(折りたたみ) に設定することで、直接ユーザー操作を行わずにfalse
を展開または折りたたむこともできます。 このプロパティが変更されると、 Expanded または Collapsed イベントが発生します。
BringIntoView メソッドがTreeViewItem コントロールで呼び出されると、TreeViewItemとその親TreeViewItem コントロールが展開されます。 TreeViewItemが表示されていない場合、または部分的に表示されていない場合は、TreeViewがスクロールして表示されます。
TreeViewItem の選択
ユーザーが TreeViewItem コントロールをクリックして選択すると、 Selected イベントが発生し、その IsSelected プロパティが true
に設定されます。
TreeViewItemは、SelectedItem コントロールのTreeViewにもなります。 逆に、選択が TreeViewItem コントロールから変更されると、その Unselected イベントが発生し、その IsSelected プロパティが false
に設定されます。
SelectedItem コントロールのTreeView プロパティは読み取り専用プロパティであるため、明示的に設定することはできません。
SelectedItem プロパティは、ユーザーがTreeViewItem コントロールをクリックした場合、または IsSelected プロパティが true
コントロールのTreeViewItemに設定されている場合に設定されます。
SelectedValuePath プロパティを使用して、SelectedValueのSelectedItemを指定します。 詳細については、「 SelectedValue、SelectedValuePath、SelectedItem の使用」を参照してください。
選択したSelectedItemChangedがいつ変更されたのかを判断するために、TreeViewItem イベントにイベント ハンドラーを登録できます。 イベント ハンドラーに提供される RoutedPropertyChangedEventArgs<T> は、前の選択である OldValueと、現在の選択である NewValueを指定します。 アプリケーションまたはユーザーが以前または現在の選択を行っていない場合は、どちらの値も null
できます。
ツリービュー スタイル
TreeView コントロールの既定のスタイルは、StackPanel コントロールを含むScrollViewer オブジェクト内に配置されます。 WidthのHeightプロパティとTreeViewプロパティを設定すると、これらの値を使用して、StackPanelを表示するTreeView オブジェクトのサイズが設定されます。 表示するコンテンツが表示領域よりも大きい場合は、 ScrollViewer が自動的に表示され、ユーザーは TreeView コンテンツをスクロールできます。
TreeViewItem コントロールの外観をカスタマイズするには、Style プロパティをカスタム Styleに設定します。
次の例では、Foregroundを使用して、FontSize コントロールのTreeViewItemとStyleプロパティの値を設定する方法を示します。
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Foreground" Value="Blue"/>
<Setter Property="FontSize" Value="12"/>
</Style>
TreeView 項目へのイメージとその他のコンテンツの追加
HeaderのTreeViewItemコンテンツに複数のオブジェクトを含めることができます。 コンテンツに複数のオブジェクト Header 含めるには、 Panel や StackPanelなどのレイアウト コントロール内でオブジェクトを囲みます。
次の例は、HeaderのTreeViewItemを、CheckBox コントロールで囲まれたTextBlockとDockPanelとして定義する方法を示しています。
<TreeViewItem>
<TreeViewItem.Header>
<DockPanel>
<CheckBox/>
<TextBlock>
TreeViewItem Text
</TextBlock>
</DockPanel>
</TreeViewItem.Header>
</TreeViewItem>
次の例は、DataTemplate コントロールで囲まれたImageとTextBlockを含むDockPanelを定義する方法を示しています。 DataTemplateを使用して、HeaderTemplateのItemTemplateまたはTreeViewItemを設定できます。
<DataTemplate x:Key="NewspaperTVItem">
<DockPanel>
<Image Source="images\icon.jpg"/>
<TextBlock VerticalAlignment="center" Text ="{Binding Path=Name}"/>
</DockPanel>
</DataTemplate>
こちらも参照ください
.NET Desktop feedback