Tutorial :WPF TreeView not collapsing its formerly used space on collapse of root root



Question:

I have some objects with various collection properties that I'm displaying in a ListBox using a DataTemplate for the ItemTemplate. Within that DataTemplate is a TreeView which displays various properties as TreeViewItem children of a root TreeViewItem which represents the items being displayed in the ListBoxItem. My problem is this : the ListBoxItems have the vertical size of the fully expanded TreeView within the DataTemplate. Is there any way to change this so that the ListBoxItems will have the minimum size possible ?

My 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>  


Solution:1

I had a style for ScrollViewer defined in the window resources that was defining the minimum height and width for all ScrollViewers in the window, and I didn't realize that ListBoxItems use ScrollViewers internally.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »