2010-01-06 18 views
0

J'ai quelques objets avec différentes propriétés de collection que je suis l'affichage dans une zone de liste à l'aide d'un DataTemplate pour ItemTemplate. Dans ce DataTemplate est un TreeView qui affiche diverses propriétés en tant que enfants TreeViewItem d'un TreeViewItem racine qui représente les éléments affichés dans le ListBoxItem. Mon problème est le suivant: les ListBoxItems ont la taille verticale de TreeView entièrement développé dans le DataTemplate. Y at-il un moyen de changer cela afin que les ListBoxItems auront la taille minimale possible?WPF TreeView pas effondrer son espace autrefois utilisé sur l'effondrement de la racine de la racine

Mon XAML:

<ListBox x:Name="ShackList" ItemsSource="{Binding}" ToolTip="Right click for options" SelectionMode="Single"> 
    <ListBox.ItemTemplate> 
    <DataTemplate DataType="{x:Type model:ShackConfigurationRepository}"> 
     <TreeView BorderThickness="0" Margin="0"> 
     <TreeView.Resources> 
      <Style x:Key="deviceRepoNodeStyle" TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="Margin" Value="3"/> 
      <Setter Property="ContextMenu" Value="{StaticResource deviceTypeTreeViewItemContextMenu}"/> 
      </Style> 
     </TreeView.Resources> 
     <TreeViewItem> 
      <TreeViewItem.Header> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="Resources/Shack_64x64_72.png" Height="24" Width="24"/> 
       <TextBlock VerticalAlignment="Center" Margin="5,0,0,0" Text="{Binding Path=ShackName}" /> 
      </StackPanel> 
      </TreeViewItem.Header> 
      <!-- 
      The 'Tag' attribute of the following TreeViewItems is a value of 
      DeviceType used to control which collection gets set as the content 
      of the device list. 
      --> 
      <TreeViewItem Header="Pendants" Tag="PENDANT"  Selected="ShackDevice_Selected" DataContext="{Binding}" Style="{StaticResource deviceRepoNodeStyle}" PreviewMouseRightButtonDown="DeviceTreeNode_PreviewMouseRightButtonDown"/> 
      <TreeViewItem Header="Oscillators" Tag="OSCILLATOR" Selected="ShackDevice_Selected" DataContext="{Binding}" Style="{StaticResource deviceRepoNodeStyle}" PreviewMouseRightButtonDown="DeviceTreeNode_PreviewMouseRightButtonDown"/> 
      <TreeViewItem Header="Thru-Arc-Tracking" Tag="TAT" Selected="ShackDevice_Selected" DataContext="{Binding}" Style="{StaticResource deviceRepoNodeStyle}" PreviewMouseRightButtonDown="DeviceTreeNode_PreviewMouseRightButtonDown"/> 
      <TreeViewItem Header="Travel" Tag="TRAVEL"   Selected="ShackDevice_Selected" DataContext="{Binding}" Style="{StaticResource deviceRepoNodeStyle}" PreviewMouseRightButtonDown="DeviceTreeNode_PreviewMouseRightButtonDown"/> 
     </TreeViewItem> 
     </TreeView> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Répondre

0

j'avais un style pour ScrollViewer défini dans les ressources de fenêtre qui définissait la hauteur minimale et la largeur pour tous ScrollViewers dans la fenêtre, et je ne savais pas que ListBoxItems utiliser ScrollViewers intérieurement.