Sdílet prostřednictvím


stromové zobrazení

Ovládací prvek TreeView zobrazuje informace v hierarchické struktuře pomocí sbalitelných uzlů. Tento článek představuje TreeView ovládací prvky a TreeViewItem uvádí příklady jejich použití.

Následující obrázek je příkladem ovládacího prvku TreeView, který obsahuje vnořené ovládací prvky TreeViewItem:

Snímek obrazovky s ovládacím prvkem treeview ve WPF

Co je TreeView?

TreeView je typ ItemsControl, který vnořuje položky pomocí ovládacích prvků TreeViewItem. Následující příklad vytvoří 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>

Vytvořte TreeView

Ovládací TreeView prvek obsahuje hierarchii ovládacích TreeViewItem prvků. TreeViewItem je HeaderedItemsControl, který má Header a Items kolekci.

Pokud definujete TreeView pomocí jazyka XAML (Extensible Application Markup Language), můžete explicitně definovat Header obsah TreeViewItem ovládacího prvku a položky, které tvoří jeho kolekci. Předchozí obrázek ukazuje tuto metodu.

Můžete také zadat ItemsSource jako zdroj dat a pak použít HeaderTemplate a ItemTemplate, abyste definovali TreeViewItem obsah.

K definování rozložení TreeViewItem ovládacího prvku můžete také použít HierarchicalDataTemplate objekty. Další informace a příklad naleznete v části Použití SelectedValue, SelectedValuePath a SelectedItem.

Pokud položka není TreeViewItem ovládacím prvkem, je automaticky uzavřena ovládacím prvkem TreeViewItem při zobrazení ovládacího prvku TreeView.

Rozbalení a sbalení TreeViewItem

Pokud uživatel rozbalí TreeViewItem, vlastnost IsExpanded je nastavena na true. Můžete také rozbalit nebo sbalit TreeViewItem bez jakékoli přímé uživatelské akce nastavením IsExpanded vlastnosti na true (rozbalit) nebo false (sbalit). Když se tato vlastnost změní, dojde k Expanded nebo Collapsed události.

Při zavolání metody BringIntoView na ovládacím prvku TreeViewItem se TreeViewItem a nadřazené ovládací prvky TreeViewItem rozbalí. Pokud TreeViewItem není viditelný nebo je viditelný pouze částečně, TreeView se posune, aby byl viditelný.

Vyberte položku TreeViewItem

Když uživatel klikne na TreeViewItem ovládací prvek, dojde k události Selected, a vlastnost IsSelected je nastavena na true. TreeViewItem se také stává SelectedItem ovládacího TreeView. Naopak, když se výběr změní z TreeViewItem ovládacího prvku, jeho Unselected událost nastane a jeho IsSelected vlastnost je nastavena na false.

Vlastnost SelectedItem ovládacího prvku je pouze pro čtení, takže ji nemůžete explicitně nastavit. Vlastnost SelectedItem je nastavena, pokud uživatel klikne na ovládací prvek TreeViewItem nebo když je vlastnost IsSelected na ovládacím prvku true nastavena na TreeViewItem.

Vlastnost SelectedValuePath slouží k určení SelectedValue pro SelectedItem. Další informace naleznete v tématu Použití SelectedValue, SelectedValuePath a SelectedItem.

Můžete zaregistrovat obslužnou rutinu pro událost SelectedItemChanged, která určí, kdy se vybraná TreeViewItem změní. Zadaný RoutedPropertyChangedEventArgs<T> obslužné rutině události určuje OldValue, který představuje předchozí výběr, a NewValue, který představuje aktuální výběr. Hodnota může být null v případě, že aplikace nebo uživatel neudělal předchozí nebo aktuální výběr.

Naformátovat TreeView

Výchozí styl pro ovládací prvek TreeView umístí tento prvek do objektu StackPanel, který obsahuje ovládací prvek ScrollViewer. Když nastavíte vlastnosti Width a Height pro TreeView, tyto hodnoty se použijí k určení velikosti objektu StackPanel, který zobrazuje TreeView. Pokud je obsah, který se má zobrazit, větší než oblast zobrazení, ScrollViewer se automaticky zobrazí, aby uživatel mohl procházet TreeView obsah.

Chcete-li přizpůsobit vzhled TreeViewItem ovládacího prvku, nastavte Style vlastnost na vlastní Style.

Následující příklad ukazuje, jak nastavit Foreground hodnoty a FontSize vlastnosti TreeViewItem ovládacího prvku pomocí Style.

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

Přidání obrázků a dalšího obsahu do položek TreeView

Do obsahu objektu Headermůžete zahrnout více než jeden objekt TreeViewItem . Pokud chcete do obsahu Header zahrnout více objektů, uzavřete je do ovládacího prvku rozložení, jako je například Panel nebo StackPanel.

Následující příklad ukazuje, jak definovat Header u TreeViewItem jako CheckBox a TextBlock, které jsou oba uzavřeny v ovládacím prvku DockPanel.

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

Následující příklad ukazuje, jak definovat DataTemplate, který obsahuje Image a TextBlock, které jsou uzavřeny v ovládacím prvku DockPanel. Můžete použít DataTemplate k nastavení HeaderTemplate nebo ItemTemplate pro TreeViewItem.

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

Běžné úkoly

Následující tabulka uvádí běžné úlohy pro práci s ovládacím prvkem TreeView:

Title Description
Vytvořte jednoduchá nebo složitá stromová zobrazení Naučte se vytvářet ovládací prvky TreeView s různými strukturami.
Použijte SelectedValue, SelectedValuePath a SelectedItem Naučte se pracovat s vlastnostmi výběru ve TreeView.
Vytvoření vazby TreeView k datům, která mají nedeterminovatelnou hloubku Zjistěte, jak vytvořit vazbu TreeView na hierarchická data s neznámou hloubkou.
Vylepšení výkonu TreeView Zjistěte, jak optimalizovat výkon TreeView.
Vyhledání TreeViewItem v TreeView Zjistěte, jak vyhledat konkrétní TreeViewItem v rámci TreeView.

Přehled datových vazeb

Přehled šablon dat

Odkazy

TreeView TreeViewItem

Styly a šablony

Výchozí nastavení ControlTemplate můžete upravit tak, aby ovládací prvek získal TreeView jedinečný vzhled. Další informace najdete v tématu Co jsou styly a šablony? a Jak vytvořit šablonu pro ovládací prvek.

Součástky

Ovládací TreeView prvek nemá žádné pojmenované části.

Při vytváření ControlTemplate pro TreeView může vaše šablona obsahovat ItemsPresenter uvnitř ScrollViewer. (Zobrazí ItemsPresenter každou položku v TreeView; ScrollViewer umožňuje posouvání uvnitř ovládacího prvku). Pokud ItemsPresenter není přímým dítětem ScrollViewer, musíte přiřadit ItemsPresenter jméno ItemsPresenter.

Vizuální stavy

Následující tabulka uvádí vizuální stavy TreeView ovládacího prvku.

Název VisualState Název skupiny VisualStateGroup Description
Valid StavyOvěření Ovládací prvek používá Validation třídu a připojená Validation.HasError vlastnost je false.
Neplatný fokus StavyOvěření Připojená Validation.HasError vlastnost je true a ovládací prvek má fokus.
NeplatnýBezZaostření StavyOvěření Připojená Validation.HasError vlastnost je true a ovládací prvek nemá fokus.

TreeViewItem – části

Následující tabulka uvádí pojmenované části TreeViewItem ovládacího prvku.

Část Typ Description
PART_Header FrameworkElement Vizuální prvek, který obsahuje obsah záhlaví ovládacího prvku TreeView.

Stavy položky TreeView

Následující tabulka uvádí vizuální stavy pro TreeViewItem ovládací prvek.

Název VisualState Název skupiny VisualStateGroup Description
Normální CommonStates Výchozí stav.
Mouseover CommonStates Ukazatel myši je umístěn nad znakem TreeViewItem.
Disabled CommonStates Tato TreeViewItem možnost je zakázaná.
Focused FocusStates TreeViewItem má fokus.
Nezaměřený FocusStates TreeViewItem nemá fokus.
Expanded ExpandStates Ovládací TreeViewItem prvek je rozbalen.
Zřícený ExpandStates Ovládací TreeViewItem prvek je sbalený.
HasItems MáStavyPoložek TreeViewItem má položky.
Žádné položky MáStavyPoložek TreeViewItem nemá položky.
Vybráno SelectionStates Je vybraná TreeViewItem .
VybránoNeaktivní SelectionStates Je TreeViewItem vybráno, ale není aktivní.
Nevybráno SelectionStates Není vybráno TreeViewItem.
Valid StavyOvěření Ovládací prvek používá Validation třídu a připojená Validation.HasError vlastnost je false.
Neplatný fokus StavyOvěření Připojená vlastnost Validation.HasError určuje, zda má true ovládací prvek fokus.
NeplatnýBezZaostření StavyOvěření Připojená vlastnost Validation.HasError je použita, když ovládací prvek true nemá fokus.

Přehled datových vazebPřehled šablon dat