如何 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;
我想为我的第一个项目构建一个笔记应用程序。到目前为止,我已经创建了一个文件并将其放在树视图中。我现在希望能够从树视图 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;