0

グリッドを使用したsilverlight3.0アプリケーションがあります。XAML は以下のとおりです。ユーザーが左の列の幅を変更したときに、TreeView コントロールのサイズを変更し、コンテンツをラップしたいと思います。現在、ツリービューは折り返しではなくスクロールバーを表示しています。右側の列では、ツリービューではなくスタックパネルがあるため、これは正常に機能します。

静的ツリービュー項目の代わりに 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>
4

1 に答える 1

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 つは、HierarchicalDataTemplate の MaxWidth に対してこの同じバインドを試みると、Blend 3 が XAML が無効であると不平を言い、赤い波線が表示されることです。もちろんまだ動作しますが、Blend の XAML パーサーの更新を楽しみにしています!

于 2010-01-22T05:30:01.707 に答える