Question

J'ai des 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. Au sein de ce DataTemplate est un TreeView qui affiche diverses propriétés que les enfants TreeViewItem d'un TreeViewItem racine qui représente les éléments étant affichés dans la ListBoxItem. Mon problème est le suivant: les ListBoxItems ont la taille verticale du TreeView complètement déployée dans le DataTemplate. Est-il possible de changer cela pour que les ListBoxItems auront la taille minimum?

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>
Était-ce utile?

La solution

J'ai eu 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 en interne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top