特定のディレクトリ内のすべてのサブフォルダのリストを含むプログラムをビルドする必要があります。いずれかのフォルダをクリックすると、別のListViewにそのファイルに含まれるファイルが表示されます。これを行う最善の方法は何ですか?私はあなたがListViewにフォルダ内のすべてのファイルを読み込むことができますが、サブフォルダのリストを読み込むことができます知っている?また、どのサブフォルダが選択されたのかをプログラムに伝えることができますので、ファイルをリストすることができます。ディレクトリ内のすべてのフォルダをListViewにロードするWPF
0
A
答えて
-1
私はListBox
を使用して、あなたのための例を持っています。それをListViewに変更することができます。 LBFolders
はサブフォルダのリストを表示するリストボックスで、LBFFiles
はファイルリストを表示する別のリストボックスです。もう1つは最初から選択したアイテムに基づいて作成されます。簡単バインディングのクラスを定義して、それをListViewItem
としましょう。今度は、2つのListBoxのXamlコードについて考えてみましょう。
<ListBox x:Name="LBFolders" Width="220px" BorderThickness="0" ItemsSource="{Binding}" Height="310">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ListBox x:Name="LBFFiles" Width="220px" BorderThickness="0" ItemsSource="{Binding}" Height="310" Canvas.Left="250">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
今、私たちは、入力としてディレクトリ・パスを受け入れます、そして一つは、サブディレクトリを取得し、DirectoryListviewを結合し、他方は、選択したディレクトリのパスを受け入れるとを有する第2リストボックスに移入されますどの、2つのメソッドを定義する必要があります選択したディレクトリ内のファイル:バックエンドのコードを考えてみましょう:
public MainWindow()
{
InitializeComponent();
GetFolders(@"C:\Users\Vishnuraj\CloudDrive");
LBFolders.SelectionChanged += new SelectionChangedEventHandler(LBFolders_SelectionChanged);
}
// triggers when an item selected in LBFolders
private void LBFolders_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListViewItem selectedItem = LBFolders.SelectedItem as ListViewItem;
GetFFiles(selectedItem.PathName);
}
// populates LBFolders listbox
public void GetFolders(string DirectoryPath)
{
List<ListViewItem> ListViewItemDirectories = new List<ListViewItem>();
DirectoryInfo Dinfo = new DirectoryInfo(DirectoryPath);
List<DirectoryInfo> ListOfDirectories = Dinfo.GetDirectories("*.*", SearchOption.AllDirectories).ToList();
foreach (DirectoryInfo directory in ListOfDirectories)
{
ListViewItemDirectories.Add(new ListViewItem() { Name = directory.Name, PathName = directory.FullName });
}
LBFolders.ItemsSource = ListViewItemDirectories;
}
// populates LBFFiles listbox
public void GetFFiles(string DirectoryPath)
{
DirectoryInfo Dinfo = new DirectoryInfo(DirectoryPath);
List<ListViewItem> ListViewItemFiles = new List<ListViewItem>();
List<FileInfo> ListOfFiles = Dinfo.GetFiles("*.*", SearchOption.TopDirectoryOnly).ToList();
foreach (FileInfo directory in ListOfFiles)
{
ListViewItemFiles.Add(new ListViewItem() { Name = directory.Name, PathName = directory.FullName });
}
LBFFiles.ItemsSource = ListViewItemFiles;
}
そして最後に重要な要因ListViewItem
クラスには、次のようにのように定義されます。
public class ListViewItem
{
public string Name { get; set; }
public string PathName { get; set; }
}
関連する問題
- 1. ディレクトリ内のすべてのフォルダとファイル
- 2. 現在のフォルダ内のすべてのディレクトリを圧縮する
- 3. フォルダ内のすべてのディレクトリ/ファイルを取得する
- 4. ディレクトリ内のすべてのフォルダを解析する
- 5. ディレクトリ内のすべてのフォルダを一覧表示する(PHP)
- 6. .NETディレクトリ内のすべてのフォルダにファイルがあります
- 7. フォルダ内のすべてのモジュールをロードする
- 8. bash内の特定のフォルダ内のすべてのディレクトリを削除する
- 9. ジキル - ディレクトリ内のすべてのフォルダを取得し、ページ
- 10. ディレクトリ内のすべてのフォルダを一覧表示し、
- 11. ディレクトリ内のすべてのフォルダを一覧表示
- 12. excelマクロをフォルダ内のすべてのディレクトリで再帰的に実行する
- 13. ディレクトリ/サブディレクトリ内のすべてのファイルをアレイにロードするためのBashスクリプト
- 14. フォルダのディレクトリにあるすべての.csvファイルをPython内の1つのフォルダにコピーします
- 15. ディレクトリ内のすべてのフォルダ内のすべてのファイルの名前をPowerShellの
- 16. codeigniterのフォルダ内にページをロードする
- 17. は一つのフォルダ以外linuxディレクトリ内のすべてのフォルダとファイルを削除して、そのフォルダ
- 18. ディレクトリ内のフォルダ数(サブディレクトリではない)を調べるには
- 19. Powershell - ディレクトリ内のすべてのフォルダを一覧表示し、各フォルダ内の最新の.bakファイルを取り出し、圧縮してディレクトリにコピーします。
- 20. 特定のフォルダ以外のディレクトリ内のすべてのフォルダを取得するためのバッチファイルループ
- 21. ディレクトリのすべてのフォルダにファイルをコピーします。
- 22. すべてのファイルをフォルダにロードする
- 23. すべてのTexture2Dをフォルダにロードする
- 24. すべてのluaファイルをディレクトリにロードする
- 25. Python - ディレクトリ内の特定のフォルダのユーザー入力、ディレクトリのすべての内容の印刷
- 26. excelファイルのファイル拡張子を変更するディレクトリ内のすべてのフォルダを調べる方法は?
- 27. ディレクトリ内の最後のフォルダのフォルダ名を取得する
- 28. ディレクトリ内のすべてのフォルダのBash-for-loop(一部を除く)
- 29. ディレクトリ内のマネージドアセンブリDLLをロードする
- 30. フォルダ内のすべてのルートを