如何以编程方式将树视图滚动到wpf中的特定节点?

时间:2016-05-26 10:34:52

标签: c# xml wpf xpath

我在WPF中有一个UserControl,里面有一个TreeView,如下所示:

 <UserControl x:Class="SchemaElementsTree">
    <TreeView
        Name="tv1"
        ItemsSource="{Binding XPath=.}"
        ItemTemplate="{StaticResource rootTemplate}">
        <TreeView.ItemContainerStyle>
            <Style
                TargetType="{x:Type TreeViewItem}">
                <EventSetter
                    Event="MouseDoubleClick"
                    Handler="OnItemMouseDoubleClick" />
                <Setter
                    Property="IsExpanded"
                    Value="False"></Setter>
            </Style>
        </TreeView.ItemContainerStyle>
    </TreeView>
</UserControl>

此用户控件正在另一个用户控件中使用,其中树视图的数据源是通过Xml数据提供程序提供的,如下所示:

   <XmlDataProvider
    x:Key="xmlData"
    x:Name="xmlDataProvider"></XmlDataProvider>
<ScrollViewer
    DataContext="{StaticResource xmlData}">
    <uc:SchemaElementsTree x:Name="schemaTree"></uc:SchemaElementsTree>
</ScrollViewer>

到目前为止,一切都还可以。现在,在XmlDataProvider加载Xml文件之后,树视图将整个树显示为处于折叠状态的一个根节点。单击根节点并进一步向下按预期工作,展开单击的相应节点。

我现在需要的是,我有一个XPath,它引用了我分配给XmlDataProvider的Xml文件中的一个节点,并且想要一个获取此XPath并使该特定节点在树视图中可见的方法。

我尝试枚举树视图的Items集合,但它只包含一个项目,即分配给XmlDataProvider的XmlDocument。当我调试时,我看到TreeView.IsLoaded即使在我点击了许多节点并展开它们之后也是假的。

这里发生了什么以及如何做到这一点?

0 个答案:

没有答案