如何 select 并从 treeview WPF 中读取 txt 文件

How to select and read a txt file from treeview WPF

我想为我的第一个项目构建一个笔记应用程序。到目前为止,我已经创建了一个文件并将其放在树视图中。我现在希望能够从树视图 select 文件并在文本框中打开它。我似乎找不到 select 文件的方法。

这是我的 treeView,我尝试使用 SelectedItemChanged

                <Style TargetType="{x:Type TreeViewItem}">
                    <Setter Property="HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Image Width="10" Margin="3" Source="images/drive.png"/>
                                    <TextBlock VerticalAlignment="Center" Text="{Binding}"/>
                                </StackPanel>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>

            </TreeView.Resources>
        </TreeView>

这是我的 C# 代码

private void FolderView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            // get selected item path

            string fileName = FolderView.SelectedValuePath;

            using (StreamReader sr = File.OpenText(fileName))
            {
                string s = "";
                while ((s = sr.ReadLine()) != null)
                {
                    noteText.Text = s;
                }
            }
        }

我还注意到人们使用不同类型的树视图样式或方法,例如有些人正在使用项目、子项或节点。我猜他们是一样的吧?

非常感谢。

您的问题出在这一行:

string fileName = FolderView.SelectedValuePath;

这是关于 SelectedValuePath 的文档,它不是您在尝试获取实际选定值时使用的文档。

根据您的代码猜测,TreeView 中的每一项似乎只是一个 string,因此请尝试使用以下代码:

string fileName = (string)FolderView.SelectedItem;

编辑:

您在评论中说 SelectedItem 返回 TreeViewItem。在那种情况下,这可能有效:

string fileName = (string)((TreeViewItem)FolderView.SelectedItem).DataContext;