특정 디렉토리의 모든 하위 폴더 목록을 포함하는 프로그램을 작성해야합니다. 폴더 중 하나를 클릭하면 다른 ListView에 포함 된 파일이 표시됩니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? ListView에 폴더의 모든 파일을로드 할 수 있지만 하위 폴더 목록을로드 할 수 있습니까? 또한 선택한 하위 폴더를 프로그램에 알릴 수 있으므로 파일을 나열 할 수 있습니까?디렉토리의 모든 폴더를 ListView로로드 WPF
0
A
답변
-1
ListBox
을 사용하여 예제가 있습니다. ListView로 변경할 수 있습니다. LBFolders
은 하위 폴더 목록을 표시하는 목록 상자이고, LBFFiles
은 파일 목록을 표시 할 또 다른 목록이며, 두 번째 파일은 첫 번째 항목에서 선택한 항목을 기반으로 채워집니다. Easy Binding을위한 클래스를 정의하고 이것을 ListViewItem
으로 부릅시다. 이제 두 개의 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을 결합하고 다른 선택한 디렉토리의 경로를 승인하고 함께 두 번째 목록 상자를 채 웁니다 어느, 두 가지 방법을 정의 할 필요가 선택한 디렉토리 내 파일 : 백 엔드 코드를 고려하십시오
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. 디렉토리의 모든 하위 폴더를 나열하고 텍스트 파일에 작성
- 6. 디렉토리의 모든 파일 스프레드 시트
- 7. 루트 디렉토리의 모든 폴더 찾기
- 8. 특정 디렉토리의 폴더를 늘리거나 반복하는 방법
- 9. 배치 스크립트 : 비어있는 디렉토리의 최신 폴더를 복사하십시오.
- 10. applescript를 사용하여 현재 디렉토리의 폴더를 병합
- 11. 디렉토리의 모든 파일로 리디렉션
- 12. 클로저에있는 디렉토리의 모든 파일로드
- 13. Apache - 모든 디렉토리의 파일
- 14. 디렉토리의 모든 이미지 표시
- 15. 디렉토리의 모든 디렉토리 찾기
- 16. 디렉토리의 모든 프로젝트 빌드
- 17. 디렉토리의 모든 파일 받기,
- 18. 디렉토리의 모든 모듈을 다시로드하십시오.
- 19. 디렉토리의 모든 파일을 읽으십시오
- 20. 디렉토리의 모든 이미지로드
- 21. 디렉토리의 모든 파일 압축하기
- 22. 디렉토리의 모든 폴더와 하위 폴더 가져 오기
- 23. 배치를 사용하는 폴더를 제외한 모든 폴더를 삭제합니다.
- 24. 디렉토리의 모든 클래스에 대한 테스트 생성
- 25. 이름으로 모든 폴더를 제거하십시오
- 26. 디렉토리의 모든 폴더에있는 모든 파일을 결합하십시오.
- 27. 모든 macosx 디렉토리의 모든 svn 파일 제거
- 28. 내 디렉토리의 모든 폴더 표시 visual basic
- 29. dir - 일부 폴더를 제외한 모든 폴더 나열
- 30. 하나만 제외하고 모든 폴더를 제외하는 방법은 무엇입니까?