2017-02-15 3 views

ответ

0

Не знаю, что вы имеете в виду

без добавления каких-либо пустой элемент

однако, вы можете добавить пункт, но установить его Visibility к Collapsed:

<TreeView> 
    <TreeViewItem> 
      <TextBlock Text="A"/> 
    </TreeViewItem> 
    <TreeViewItem> 
      <TextBlock Text="A" Visibility="Collapsed"/> 
    </TreeViewItem> 
</TreeView> 

Другой подход:

Использование this style и удалить эту часть:

<Trigger Property="HasItems" 
      Value="false"> 
      <Setter TargetName="Expander" 
        Property="Visibility" 
        Value="Hidden" /> 
</Trigger> 

Редактировать

<Window x:Class="Test.MainWindow" 
    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" 
    xmlns:local="clr-namespace:Test" 
    xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase" 
    mc:Ignorable="d" 
    Title="MainWindow"> 

<Window.Resources> 
    <Color x:Key="WindowColor">#FFE8EDF9</Color> 
    <Color x:Key="ContentAreaColorLight">#FFC5CBF9</Color> 
    <Color x:Key="ContentAreaColorDark">#FF7381F9</Color> 

    <Color x:Key="DisabledControlLightColor">#FFE8EDF9</Color> 
    <Color x:Key="DisabledControlDarkColor">#FFC5CBF9</Color> 
    <Color x:Key="DisabledForegroundColor">#FF888888</Color> 

    <Color x:Key="SelectedBackgroundColor">#FFC5CBF9</Color> 
    <Color x:Key="SelectedUnfocusedColor">#FFDDDDDD</Color> 

    <Color x:Key="ControlLightColor">White</Color> 
    <Color x:Key="ControlMediumColor">#FF7381F9</Color> 
    <Color x:Key="ControlDarkColor">#FF211AA9</Color> 

    <Color x:Key="ControlMouseOverColor">#FF3843C4</Color> 
    <Color x:Key="ControlPressedColor">#FF211AA9</Color> 


    <Color x:Key="GlyphColor">#FF444444</Color> 
    <Color x:Key="GlyphMouseOver">sc#1, 0.004391443, 0.002428215, 0.242281124</Color> 

    <!--Border colors--> 
    <Color x:Key="BorderLightColor">#FFCCCCCC</Color> 
    <Color x:Key="BorderMediumColor">#FF888888</Color> 
    <Color x:Key="BorderDarkColor">#FF444444</Color> 

    <Color x:Key="PressedBorderLightColor">#FF888888</Color> 
    <Color x:Key="PressedBorderDarkColor">#FF444444</Color> 

    <Color x:Key="DisabledBorderLightColor">#FFAAAAAA</Color> 
    <Color x:Key="DisabledBorderDarkColor">#FF888888</Color> 

    <Color x:Key="DefaultBorderBrushDarkColor">Black</Color> 

    <!--Control-specific resources.--> 
    <Color x:Key="HeaderTopColor">#FFC5CBF9</Color> 
    <Color x:Key="DatagridCurrentCellBorderColor">Black</Color> 
    <Color x:Key="SliderTrackDarkColor">#FFC5CBF9</Color> 

    <Color x:Key="NavButtonFrameColor">#FF3843C4</Color> 

    <LinearGradientBrush x:Key="MenuPopupBrush" 
        EndPoint="0.5,1" 
        StartPoint="0.5,0"> 
     <GradientStop Color="{DynamicResource ControlLightColor}" 
       Offset="0" /> 
     <GradientStop Color="{DynamicResource ControlMediumColor}" 
       Offset="0.5" /> 
     <GradientStop Color="{DynamicResource ControlLightColor}" 
       Offset="1" /> 
    </LinearGradientBrush> 

    <LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill" 
        StartPoint="0,0" 
        EndPoint="1,0"> 
     <LinearGradientBrush.GradientStops> 
      <GradientStopCollection> 
       <GradientStop Color="#000000FF" 
        Offset="0" /> 
       <GradientStop Color="#600000FF" 
        Offset="0.4" /> 
       <GradientStop Color="#600000FF" 
        Offset="0.6" /> 
       <GradientStop Color="#000000FF" 
        Offset="1" /> 
      </GradientStopCollection> 
     </LinearGradientBrush.GradientStops> 
    </LinearGradientBrush> 
    <Style x:Key="ExpandCollapseToggleStyle" 
    TargetType="ToggleButton"> 
     <Setter Property="Focusable" 
     Value="False" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ToggleButton"> 
        <Grid Width="15" 
      Height="13" 
      Background="Transparent"> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CheckStates"> 
           <VisualState x:Name="Checked"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" 
               Storyboard.TargetName="Collapsed"> 
              <DiscreteObjectKeyFrame KeyTime="0" 
              Value="{x:Static Visibility.Hidden}" /> 
             </ObjectAnimationUsingKeyFrames> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" 
               Storyboard.TargetName="Expanded"> 
              <DiscreteObjectKeyFrame KeyTime="0" 
              Value="{x:Static Visibility.Visible}" /> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Unchecked" /> 
           <VisualState x:Name="Indeterminate" /> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Path x:Name="Collapsed" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Center" 
       Margin="1,1,1,1" 
       Data="M 4 0 L 8 4 L 4 8 Z"> 
          <Path.Fill> 
           <SolidColorBrush Color="{DynamicResource GlyphColor}" /> 
          </Path.Fill> 
         </Path> 
         <Path x:Name="Expanded" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Center" 
       Margin="1,1,1,1" 
       Data="M 0 4 L 8 4 L 4 8 Z" 
       Visibility="Hidden"> 
          <Path.Fill> 
           <SolidColorBrush Color="{DynamicResource GlyphColor}" /> 
          </Path.Fill> 
         </Path> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <Style x:Key="TreeViewItemFocusVisual"> 
     <Setter Property="Control.Template"> 
      <Setter.Value> 
       <ControlTemplate> 
        <Border> 
         <Rectangle Margin="0,0,0,0" 
        StrokeThickness="5" 
        Stroke="Black" 
        StrokeDashArray="1 2" 
        Opacity="0" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <Style x:Key="{x:Type TreeViewItem}" 
    TargetType="{x:Type TreeViewItem}"> 
     <Setter Property="Background" 
     Value="Transparent" /> 
     <Setter Property="HorizontalContentAlignment" 
     Value="{Binding Path=HorizontalContentAlignment, 
    RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" /> 
     <Setter Property="VerticalContentAlignment" 
     Value="{Binding Path=VerticalContentAlignment, 
    RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" /> 
     <Setter Property="Padding" 
     Value="1,0,0,0" /> 
     <Setter Property="Foreground" 
     Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" /> 
     <Setter Property="FocusVisualStyle" 
     Value="{StaticResource TreeViewItemFocusVisual}" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TreeViewItem}"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition MinWidth="19" 
          Width="Auto" /> 
          <ColumnDefinition Width="Auto" /> 
          <ColumnDefinition Width="*" /> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition /> 
         </Grid.RowDefinitions> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="SelectionStates"> 
           <VisualState x:Name="Selected"> 
            <Storyboard> 
             <ColorAnimationUsingKeyFrames Storyboard.TargetName="Bd" 
               Storyboard.TargetProperty="(Panel.Background). 
        (SolidColorBrush.Color)" 
               > 
              <EasingColorKeyFrame KeyTime="0" 
             Value="{StaticResource SelectedBackgroundColor}" /> 
             </ColorAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Unselected" /> 
           <VisualState x:Name="SelectedInactive"> 
            <Storyboard> 
             <ColorAnimationUsingKeyFrames Storyboard.TargetName="Bd" 
               Storyboard.TargetProperty="(Panel.Background). 
        (SolidColorBrush.Color)"> 
              <EasingColorKeyFrame KeyTime="0" 
             Value="{StaticResource SelectedUnfocusedColor}" /> 
             </ColorAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="ExpansionStates"> 
           <VisualState x:Name="Expanded"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" 
               Storyboard.TargetName="ItemsHost"> 
              <DiscreteObjectKeyFrame KeyTime="0" 
              Value="{x:Static Visibility.Visible}" /> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Collapsed" /> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <ToggleButton x:Name="Expander" 
         Style="{StaticResource ExpandCollapseToggleStyle}" 
         ClickMode="Press" 
         IsChecked="{Binding IsExpanded, 
      RelativeSource={RelativeSource TemplatedParent}}"/> 
         <Border x:Name="Bd" 
       Grid.Column="1" 
       Background="{TemplateBinding Background}" 
       BorderBrush="{TemplateBinding BorderBrush}" 
       BorderThickness="{TemplateBinding BorderThickness}" 
       Padding="{TemplateBinding Padding}"> 
          <ContentPresenter x:Name="PART_Header" 
          ContentSource="Header" 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/> 
         </Border> 
         <ItemsPresenter x:Name="ItemsHost" 
         Grid.Row="1" 
         Grid.Column="1" 
         Grid.ColumnSpan="2" 
         Visibility="Collapsed" /> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="HasHeader" 
         Value="false" /> 
           <Condition Property="Width" 
         Value="Auto" /> 
          </MultiTrigger.Conditions> 
          <Setter TargetName="PART_Header" 
        Property="MinWidth" 
        Value="75" /> 
         </MultiTrigger> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="HasHeader" 
         Value="false" /> 
           <Condition Property="Height" 
         Value="Auto" /> 
          </MultiTrigger.Conditions> 
          <Setter TargetName="PART_Header" 
        Property="MinHeight" 
        Value="19" /> 
         </MultiTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 

<Grid> 
    <TreeView> 
     <TreeViewItem> 
      <TextBlock Text="A"/> 
     </TreeViewItem> 
     <TreeViewItem /> 
    </TreeView> 
</Grid> 
</Window> 
+0

Ok ... Я имею в виду, что я не хочу использовать пустой элемент. Я просто хочу отредактировать стиль управления, чтобы посмотреть, как он расширяется, иначе это не так. –

+0

Я думал, что элемент '' Collapsed'' не является пустым. В любом случае, см. Редактирование. – Ron

+0

Нет, это не работает, потому что Expander не распознается. –

Смежные вопросы