0

親ツリービューアイテムの高さに応じて、ツリービューアイテムのマージンを調整する必要があります。階層データ テンプレートのスタック パネルにコンバーターを追加しようとしましたが、コンバーターの convertTo メソッドでツリービュー項目にアクセスする方法がありません。

    <UserControl.Resources>

    <converter:LocationConverter x:Name="LocationConverter1" x:Key="LocationConverter1" />

    <sdk:HierarchicalDataTemplate x:Key="DataTemplate1" ItemsSource="{Binding SubCategory}">

            <StackPanel Margin="{Binding Converter={StaticResource LocationConverter1}}">

                <TextBlock Text="{Binding Name}" />

            </StackPanel>

        </sdk:HierarchicalDataTemplate>

    </UserControl.Resources>

<Grid x:Name="LayoutRoot">
    <custom:TreeViewExtended x:Name="TopicsTreeView"  
                             HorizontalAlignment="Left" 
                             VerticalAlignment="Top" 
                             ItemTemplate="{StaticResource DataTemplate1}"/>

    <Button Content="Add" Click="Button_Click" Margin="200"></Button>



</Grid>

コンバーターメソッド内から名前でtreeviewitemsを見つけることができるように、treeViewインスタンスをconverterParameterとしてconvertToメソッドに渡す方法はありますか?

ありがとう

4

1 に答える 1

0

TreeView インスタンスを ConverterParameter として配置する良い方法はわかりません (これを実現する方法について、 Google のConverterParameterいくつかの 興味深い アイデアを生み出します ...)。しかし、ツリー ビュー全体をビジュアル ツリーを検索して必要な高さを見つけるコンバーターを使用して、TreeViewItem を Margin バインディングに渡しませんか?

これは次のように行うことができます。

<StackPanel Margin="{Binding RelativeSource={RelativeSource FindAncestor, 
                                                            AncestorType=TreeViewItem},
                             Converter={StaticResource LocationConverter1}}">

これで、コンバーターの値パラメーターは現在のTreeViewItemになります。この値から、 VisualTreeHelperを使用して TreeView インスタンス、または親 TreeViewItem (存在する場合) を取得できます。

于 2011-01-30T17:09:28.987 に答える