次の方法で共有


TreeView の概要

TreeView コントロールは、折りたたみ可能なノードを使用して階層構造に情報を表示する方法を提供します。 このトピックでは、 TreeView コントロールと TreeViewItem コントロールについて説明し、その使用方法の簡単な例を示します。

TreeView とは

TreeViewItemsControlで、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 コントロールは、HeaderedItemsControlHeader コレクションを持つItemsです。

拡張アプリケーション マークアップ言語 (XAML) を使用してTreeViewを定義する場合は、Header コントロールのTreeViewItemコンテンツとそのコレクションを構成する項目を明示的に定義できます。 前の図は、この方法を示しています。

データ ソースとして ItemsSource を指定し、 HeaderTemplateItemTemplate を指定して 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 プロパティを使用して、SelectedValueSelectedItemを指定します。 詳細については、「 SelectedValue、SelectedValuePath、SelectedItem の使用」を参照してください。

選択したSelectedItemChangedがいつ変更されたのかを判断するために、TreeViewItem イベントにイベント ハンドラーを登録できます。 イベント ハンドラーに提供される RoutedPropertyChangedEventArgs<T> は、前の選択である OldValueと、現在の選択である NewValueを指定します。 アプリケーションまたはユーザーが以前または現在の選択を行っていない場合は、どちらの値も null できます。

ツリービュー スタイル

TreeView コントロールの既定のスタイルは、StackPanel コントロールを含むScrollViewer オブジェクト内に配置されます。 WidthHeightプロパティとTreeViewプロパティを設定すると、これらの値を使用して、StackPanelを表示するTreeView オブジェクトのサイズが設定されます。 表示するコンテンツが表示領域よりも大きい場合は、 ScrollViewer が自動的に表示され、ユーザーは TreeView コンテンツをスクロールできます。

TreeViewItem コントロールの外観をカスタマイズするには、Style プロパティをカスタム Styleに設定します。

次の例では、Foregroundを使用して、FontSize コントロールのTreeViewItemStyleプロパティの値を設定する方法を示します。

<Style TargetType="{x:Type TreeViewItem}">
  <Setter Property="Foreground" Value="Blue"/>
  <Setter Property="FontSize" Value="12"/>
</Style>

TreeView 項目へのイメージとその他のコンテンツの追加

HeaderTreeViewItemコンテンツに複数のオブジェクトを含めることができます。 コンテンツに複数のオブジェクト Header 含めるには、 PanelStackPanelなどのレイアウト コントロール内でオブジェクトを囲みます。

次の例は、HeaderTreeViewItemを、CheckBox コントロールで囲まれたTextBlockDockPanelとして定義する方法を示しています。

<TreeViewItem>
  <TreeViewItem.Header>
    <DockPanel>
      <CheckBox/>
      <TextBlock>
        TreeViewItem Text
      </TextBlock>
    </DockPanel>
  </TreeViewItem.Header>
</TreeViewItem>

次の例は、DataTemplate コントロールで囲まれたImageTextBlockを含むDockPanelを定義する方法を示しています。 DataTemplateを使用して、HeaderTemplateItemTemplateまたはTreeViewItemを設定できます。

<DataTemplate x:Key="NewspaperTVItem">
  <DockPanel>
    <Image Source="images\icon.jpg"/>
    <TextBlock VerticalAlignment="center" Text ="{Binding Path=Name}"/>
  </DockPanel>
</DataTemplate>

こちらも参照ください