Datagrid ItemsSource不会添加列表

时间:2018-07-05 08:33:57

标签: c# .net wpf datagrid

早上好, 我在WPF中使用DataGrid面临一个非常奇怪的问题。 我正在尝试在特定文件夹内添加文件列表,但是网格仍然为空白。你能解释一下为什么吗? 那是我的代码:

private static readonly string _sharedFolder = Settings.GetShared();
private readonly DirectoryInfo _disF = new DirectoryInfo(_sharedFolder);

private void LoadRecipe_OnLoaded(object sender, RoutedEventArgs e)
{
    FileInfo[] _sFFiles = _sF.GetFiles("*.csv");
    List<string> filesList = new List<string>();
    foreach (FileInfo file in _sFFiles)
    {
        filesList.Add(file.Name);
    }

    Resources.MergedDictionaries.Add(Function.SetLanguageDictionary());
    Title = Function.GetTranslatedValue("LoadRecipe", Settings.GetLang());
    DatagridRecipes.ItemsSource = filesList;
    FoundRecipesLabel.Content = Function.GetTranslatedValue("FoundRecipes", Settings.GetLang());
    ButtonLoadRecipe.Content = Function.GetTranslatedValue("Load", Settings.GetLang());
}

我也尝试过(在foreach中)打印文件名。我得到了正确的输出。 我真的不知道为什么不起作用。 我每次都会得到的唯一值是file.Name.Length值。

LoadRecipe

有人可以给我提示吗?

提前谢谢

编辑

这是XAML:

<Grid>
    <Button x:Name="ButtonLoadRecipe" Content="Load" HorizontalAlignment="Stretch" Margin="10,0,10,10" VerticalAlignment="Bottom" Style="{DynamicResource SquareMetroButton}" Height="40" Click="ButtonLoadRecipe_Click"/>
    <DataGrid x:Name="DatagridRecipes" HorizontalAlignment="Left" Height="351" Margin="10,65,0,0" VerticalAlignment="Top" Width="274" AutoGenerateColumns="False" SelectionChanged="DatagridRecipes_SelectionChanged"/>
    <Label x:Name="FoundRecipesLabel" Content="RecipesFound" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" FontSize="16" FontWeight="Bold"/>
    <Separator HorizontalAlignment="Left" Height="19" Margin="10,46,0,0" VerticalAlignment="Top" Width="274"/>
</Grid>

1 个答案:

答案 0 :(得分:1)

How come my databinding is writing out the Length property?中的

我回答了Length列的来源:它是由DataGrid自动生成的,因为默认情况下启用了属性的列自动生成功能,并且字符串仅具有属性Length

要摆脱“长度”列,请像链接的问题一样设置AutoGenerateColumns="False"并定义<DataGrid.Columns>

将字符串集合绑定到DataGrid是已知的“陷阱”:WPF: Bind DataGrid to List<String>。 DataGrid应该是可编辑的,但字符串项不能编辑。


根据您的情况-显示一个可以选择的字符串列表-使用ListBox而不是DataGrid