2009-07-29 14 views
0

グリッド付きのsilverlight3.0アプリケーションがあります。 XAMLは次のとおりです。 ユーザーが左の列の幅を変更すると、TreeViewコントロールのサイズを変更して内容をラップしたいと思っています。現在、ツリービューはラップする代わりにスクロールバーを表示します。 右側の列にはツリービューはありませんがスタックパネルは正常です。グリッドスプリッターを使ったツリービューの自動サイズ変更幅

静的なtreeviewitemsの代わりにHierarchicalDataTemplateを使用すると同じことが起こります。

この作品を作成する方法についてのご意見はありますか?

おかげで、くそ -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のサイズにバインドし、オフセットを提供することです。 (WPF)TreeViewコントロールのために、このXAMLを試してみて、その囲みの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> 

あなたはオフセットを行い、値コンバータを書き、ツリーの各レベルのオフセットを確認する必要があります十分に大きいので、スプリッタをスライドさせるときに水平スクロールバーが表示されません。

私がこのテクニックを持っている1つの問題は、HiearchicalDataTemplateのMaxWidthに対してこの同じバインディングを試してみると、Blend 3がXAMLが無効で、赤い塊があると言うことです。それでもなお動作しますが、私はBlendのXAMLパーサーアップデートを楽しみにしています!

関連する問題