c# - 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\.....
解决方案
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>