2

我搜索了许多主题,但找不到有关使用 WPFDataGrid列出目录中文件名内容的答案。我能够在 a 中输出内容,ListBox但不知道如何将项目添加到 a Columnin 中DataGrid

这适用于ListBox

string path = "C:";

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

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

我怎样才能对 a 做同样的事情DataGrid?或者至少strings从一个地方array变成一个地方DataGrid Column

4

5 回答 5

6

您可以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();

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

于 2013-08-27T20:46:01.820 回答
2

您首先必须在 DataGrid 中添加列(使用 VS 对设计器来说非常简单),然后您可以使用以下内容:

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

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

于 2013-08-27T20:32:54.207 回答
1

代替:

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

利用

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

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

于 2013-08-27T20:58:05.220 回答
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>
于 2013-08-27T20:45:05.920 回答
-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;
于 2017-06-10T09:49:18.167 回答