2009-07-29 51 views
0

我有一個silverlight3.0應用程序與網格。 XAML在下面。 我想在用戶更改左欄的寬度時讓TreeView控件調整大小和內容。目前樹形視圖顯示滾動條而不是包裝。 在右側的列上,這可以正常工作,因爲沒有treeview但是stackpanel。使用網格劃分器自動調整樹形圖的寬度

當我使用HierarchicalDataTemplate而不是靜態treeviewitems時會發生同樣的情況。

關於如何使這項工作的任何想法?

謝謝, -cc

<Grid x:Name="LayoutRoot" Background="Aqua"> 


      <Grid.RowDefinitions> 
       <RowDefinition /> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition /> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition /> 
      </Grid.ColumnDefinitions> 
     <StackPanel Orientation="Vertical" Grid.Column="0" Background="Yellow"> 
      <controls:TreeView > 

       <controls:TreeViewItem Header="test1 some text some text some text some text some text"> 
        <controls:TreeViewItem Header="test1.1 some text some text some text some text some text"> 
        </controls:TreeViewItem> 
       </controls:TreeViewItem> 
       <controls:TreeViewItem Header="test2 some text some text some text some text some text some text some text some text some text some text some text"> 
        <controls:TreeViewItem Header="test2 some text some text some text some text some text some text some text some text some text some text some text"> 
        </controls:TreeViewItem> 

       </controls:TreeViewItem> 
      </controls:TreeView> 
     </StackPanel> 
     <controls:GridSplitter Grid.Row="0" Grid.Column="1" Width="5" VerticalAlignment="Stretch" 
             HorizontalAlignment="Center" Background="AliceBlue"/> 
     <StackPanel Grid.Column="2" Orientation="Vertical"> 
      <TextBlock TextWrapping="Wrap"> dwd kwdh wkd wkd wkd wkjd hwkdjhw kdw dkw k</TextBlock> 
      <TextBlock TextWrapping="Wrap"> dwd kwdh wkd wkd wkd wkjd hwkdjdwd kwdh wkd wkd wkd wkjd hwkdjhw kdw dkw k</TextBlock> 
     </StackPanel> 
    </Grid> 

回答

0

該死;我在這裏登陸尋找這個問題的答案。

最好我能做的就是將TextBlock的MaxWidth綁定到TreeView的大小,並提供一個偏移量。試試這個XAML的(WPF)的TreeView,並擺脫封閉的StackPanel的:

<TreeView> 
     <TreeViewItem> 

      <TreeViewItem.Header> 
       <TextBlock 
        Text="Maecenas praesent accumsan bibendum dictumst eleifend facilisi faucibus habitant inceptos interdum lobortis nascetur pharetra placerat " 
        Background="Azure" 
        TextWrapping="Wrap" 
        MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}, Path=ActualWidth, Converter={StaticResource ValueSubtractor}, ConverterParameter=30}" 
       /> 
      </TreeViewItem.Header> 

      <TextBlock 
       Text="Faucibus habitant inceptos interdum lobortis nascetur pharetra placerat pulvinar sagittis senectus sociosqu suscipit torquent ultrices" 
       Background="#FFBDBDE6" 
       TextWrapping="Wrap" 
       MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}, Path=ActualWidth, Converter={StaticResource ValueSubtractor}, ConverterParameter=50}" 
      /> 

      <TextBlock 
       Text="Placerat pulvinar sagittis senectus sociosqu suscipit torquent ultrices vehicula volutpat maecenas praesent accumsan bibendum dictumst" 
       Background="#FF9090E0" 
       TextWrapping="Wrap" 
       MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}, Path=ActualWidth, Converter={StaticResource ValueSubtractor}, ConverterParameter=50}" 
      /> 

     </TreeViewItem> 
    </TreeView> 

你需要編寫執行偏移值轉換器,並確保偏移量樹的每個級別足夠大,以便在滑動分離器時水平滾動條不會出現。

我對這種技術有一個問題,當我在HiearchicalDataTemplate上對MaxWidth嘗試這個相同的綁定時,Blend 3抱怨XAML無效,並且出現紅色的小彎曲。當然,它仍然運行,但我期待着Blend的XAML解析器更新!