列出DataGrid中的目录文件

时间:2013-08-27 20:25:28

标签: c# wpf wpfdatagrid .net

我搜索了很多主题,无法找到使用WPF DataGrid列出目录中文件名内容的答案。我可以在ListBox中输出内容,但不知道如何将项目添加到Column中的DataGrid

适用于ListBox

string path = "C:";

object[] AllFiles = new DirectoryInfo(path).GetFiles().ToArray();

foreach (object o in AllFiles)
{
    listbox.Items.Add(o.ToString());
}

如何使用DataGrid执行相同的操作?或者从stringsarray DataGrid的至少地点Column

5 个答案:

答案 0 :(得分:5)

您可以使用一列创建DataGrid

<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn IsReadOnly="True" Binding="{Binding}" Header="Name"/>
    </DataGrid.Columns>
</DataGrid>

并将其填入您的代码中:

myDataGrid.ItemsSource = new DirectoryInfo(path).GetFiles();

通过将ItemsSource设置为FileInfo[],您可以选择创建绑定到FileInfo类的其他属性的其他列。此DataGrid适用于分配给IEnumerable的任何ItemsSource。如果它不是string,则会调用ToString()

答案 1 :(得分:2)

首先必须在DataGrid中添加Columns(使用VS对设计师来说非常简单)然后你可以使用类似的东西:

for (int i = 0; i < Object.Length; i++)
    dataGrid.Rows[i].Cells[0].Value = Object[i];

在这种情况下,我正在使用Cells [0],但您可以指定行上的任何单元格来放置值。

答案 2 :(得分:1)

您应该能够将列表框绑定到DataGrid,例如:

<Window x:Class="Bind02.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Bind02" Height="300" Width="300"
>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <ListBox Name="listBox" ItemsSource="{Binding}"/>
        <StackPanel Grid.Column="1">
            <Button Click="OnLoad">_Load</Button>
            <Button Click="OnSave">_Save</Button>
            <Button Click="OnAdd">_Add</Button>
            <Button Click="OnEdit">_Edit</Button>
            <Button Click="OnDelete">_Delete</Button>
            <Button Click="OnExit">E_xit</Button>
        </StackPanel>
    </Grid>
</Window>

答案 3 :(得分:1)

而不是:

object[] AllFiles = new DirectoryInfo(path).GetFiles().ToArray();

使用

List<string> AllFiles = new DirectoryInfo(path).GetFiles().ToList();
MyDataGrid.ItemSource = Allfiles;

这会自动将文件绑定到DataGrid。

答案 4 :(得分:-1)

string [] fileEntries = Directory.GetFiles(targetDirectory);

List<FileInfo> fileList = new List<FileInfo>();

foreach (string file in fileEntries)
{

fileList.Add(new FileInfo(file));
}

datagrid.ItemsSource = fileList;