首页 > 解决方案 > WPF DataGrid 显示长度而不是路径

问题描述

我尝试下面的代码来检索目录名称,但它显示长度?

List<string> merchants = new List<string>();
foreach (string i in Directory.GetDirectories(Directory.GetCurrentDirectory() + "/Data/").ToList())
{
   merchants.Add(i);
}
merchantTable.ItemsSource = merchants;

结果是

|Length|
_______________________
|20    |
|29    |

我尝试了以下答案但同样的问题

如何获取目录名称

从路径中获取文件夹名称

WPF 代码

<DataGrid x:Name="merchantTable" HorizontalAlignment="Left" Margin="15,39,0,0" VerticalAlignment="Top" Width="208" Height="343"/>

更新

我使用 MessageBox 它显示返回值是完整路径C:\.....\Data\.....

标签: c#wpfdirectory

解决方案


DataGrid 旨在显示一组列,通常一个用于数据项类的每个属性,即其ItemsSource集合的元素类型。

因此,将它用于字符串集合是没有意义的。改用 ListBox

<ListBox x:Name="merchantTable"/>

并简化 ItemsSource 分配:

merchantTable.ItemsSource = Directory.GetDirectories(
     Path.Combine(Directory.GetCurrentDirectory(), "Data"));

如果您确实需要使用 DataGrid,请定义这样的列:

<DataGrid x:Name="merchantTable" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Directory">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

推荐阅读