2

私は のTreeView中に を持っていますPopup。アイデアは、ユーザーが から選択し、TreeView開いているノードを表示できるようにすることです。コードは次のとおりです。

<Popup PlacementTarget="{Binding ElementName=TBXProjection}" Style="{StaticResource ProjPopupStyle}" VerticalOffset="27" HorizontalOffset="-262" Margin="0,0,465,279" Name="PopupProjection" AllowsTransparency="True" Placement="Top">
    <Grid>
        <Border BorderThickness="2" Background="DodgerBlue" BorderBrush="DodgerBlue" Padding="0" CornerRadius="6">
            <ScrollViewer Height="275" Name="scrollViewer1" Width="260" BorderBrush="Black" Background="DodgerBlue">
                <TreeView Name="dirTree" ItemsSource="{Binding Source={StaticResource xmldata}, XPath=.}" VirtualizingStackPanel.IsVirtualizing="False" VirtualizingStackPanel.VirtualizationMode="Standard" SelectedItemChanged="dirTree_SelectedItemChanged"/>
            </ScrollViewer>
        </Border>
    </Grid>
</Popup>

これが何をしているのかです。これが私がする必要があることです。

ポップアップ/ツリービューが行っていることは次のとおりですここにそれがすべきことがあります。

ユーザーが手動で下にスクロールして情報を取得できることはわかっていますが、ユーザーが (たとえばワイオミング) を選択すると、別の子供を選択する意図があります。スクロールが自動的に開き、選択できるようになります。

微調整が必​​要な正しいプロパティを教えてもらえますか?

4

1 に答える 1

1

あなたが望むことをするプロパティを知りません。

ただし、表示したいTreeViewItemの最後でBrinIntoViewメソッドを使用できます。ノードを開くたびに、最後の子要素が表示されているかどうかを確認し、表示されていない場合はリンクしたメソッドを使用します。目標を達成するためのコードの変更は次のとおりです。

XAML 部分:

<TreeView Name="dirTree" ItemsSource="{Binding Source={StaticResource xmldata}, XPath=.}" VirtualizingStackPanel.IsVirtualizing="False"
                                      VirtualizingStackPanel.VirtualizationMode="Standard" SelectedItemChanged="dirTree_SelectedItemChanged" TreeViewItem.Expanded="ShowMyLastChild"/>

C#部分:

    private void ShowMyLastChild(object sender, RoutedEventArgs e)
    {
        ((TreeViewItem)((TreeViewItem)(e.Source)).Items.GetItemAt(((TreeViewItem)(e.Source)).Items.Count - 1)).BringIntoView();
    }

上記のコードでは、子ノードが展開されるたびに発生する TreeView に添付イベントを追加しました。イベント ハンドラーは、展開された子ノードの最後の子ノードをチェックし、それを表示します。このようにして、データ ソースに関係なく実行できます。

ご不明な点がございましたら、お気軽にお問い合わせください。喜んでお手伝いさせていただきます。

于 2013-04-15T15:08:19.827 に答える