Изменение ширины элемента Silverlight TreeViewItem

Меня попросили создать собственный TreeView на основе базового TreeView из SDK. Все работает, проблема в том, что узлы / листья не растягиваются до своего содержимого, их ширина всегда одинакова. Вот разметка xaml:

<Grid xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
      xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'                                                    xmlns:sdk='http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk'>
      <Grid.Resources>
          <Style x:Key='TreeViewChildStyle' TargetType='sdk:TreeViewItem'>
             <Setter Property='HorizontalContentAlignment' Value='Stretch'/>
             <Setter Property='Background' Value='Blue'/>
          </Style>
      <sdk:HierarchicalDataTemplate x:Key='ChildTemplate' x:Name='ChildTemplate'>
             <TextBlock HorizontalAlignment='Stretch' Text='{Binding Path=ChildPath}'/>  
          </sdk:HierarchicalDataTemplate>
      <sdk:HierarchicalDataTemplate x:Key='NameTemplate' ItemsSource='{Binding Path=   ChildrenCollectionPath}' x:Name='NameTemplate' ItemTemplate='{StaticResource ChildTemplate}'>
             <TextBlock HorizontalAlignment='Stretch' Text='{Binding Path=ParentPath}' Width='1000'/>
      </sdk:HierarchicalDataTemplate>
      </Grid.Resources>
      <sdk:TreeView Height='Auto' Background='Red' ItemContainerStyle='{StaticResource TreeViewChildStyle}' Name='treeView1' ItemTemplate='{StaticResource NameTemplate} VerticalAlignment='Stretch' HorizontalAlignment='Stretch' BorderThickness='0'/> 
</Grid>

Я уже пробовал установить ширину ItemContainer в коде позади, установив ширину TextBlocks на «Авто», установив ширину ItemContainer в разметке стиля. Ничего не работает, элементы TreeViewItem всегда имеют одинаковую ширину и слишком узкие.

Изменить: Да, в сетку добавлено пространство имен SDK, что-то случилось с редактором, и оно не отображается, ничего не поделаешь.

Edit2: TreeView фактически изменяет свою ширину на заданное значение, но его элементы все еще не масштабируются.


person Rufix    schedule 05.03.2013    source источник


Ответы (1)


Попробуйте определить строку или столбец сетки и установите для параметра «Высота / ширина» значение «*», чтобы использовать как можно больше места.

<Grid.RowDefintions>
     <RowDefintion Height="*" />
</Grid.RowDefintions>

<Grid.ColumnDefinitons>
     <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
person hijack    schedule 05.03.2013
comment
Попробуйте внутри sdk: HierarchicalDataTemplate использовать сетку, а затем текстовый блок внутри нее. И установите RowDefintion и ColumnDefiniton в этой сетке на * - person hijack; 05.03.2013
comment
Все еще не это. Собираюсь попробовать с материалом ScaleToContent. - person Rufix; 05.03.2013