Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表<&燃气轮机;启动时在Gridview中创建列,但Dictionary<&燃气轮机;不';T(WPF)_C#_Wpf_List_Gridview_Dictionary - Fatal编程技术网

C# 列表<&燃气轮机;启动时在Gridview中创建列,但Dictionary<&燃气轮机;不';T(WPF)

C# 列表<&燃气轮机;启动时在Gridview中创建列,但Dictionary<&燃气轮机;不';T(WPF),c#,wpf,list,gridview,dictionary,C#,Wpf,List,Gridview,Dictionary,将列表设置为Gridview(WPF)的itemssource时,将在应用程序启动时创建列 请参见示例代码,列表为itemssource。在不向列表中添加任何对象的情况下运行程序时,这将正确生成列:“文件”、“持续时间”和“状态” public MainWindow() { InitializeComponent(); DataGrid.ItemsSource = LoadFiles(); } public cla

将列表设置为Gridview(WPF)的itemssource时,将在应用程序启动时创建列

请参见示例代码,列表为itemssource。在不向列表中添加任何对象的情况下运行程序时,这将正确生成列:“文件”、“持续时间”和“状态”

 public MainWindow()
         {
          InitializeComponent();
          DataGrid.ItemsSource = LoadFiles();
         }

 public class Files
        {
            public string File { get; set; }
            public string Duration { get; set; }
            public string Status { get; set; }
        }

        List<Files> files = new List<Files>();

        private List<Files> LoadFiles()
        { 
            return files;
        }
public主窗口()
{
初始化组件();
DataGrid.ItemsSource=LoadFiles();
}
公共类文件
{
公共字符串文件{get;set;}
公共字符串持续时间{get;set;}
公共字符串状态{get;set;}
}
列表文件=新列表();
私有列表加载文件()
{ 
归还文件;
}
现在我重写了代码,用字典类型绑定GridView,因为我需要存储值/键对。但在加载应用程序时,不会生成列。只有在使用内容填充字典后,才会生成列:

 public MainWindow()
    {
        InitializeComponent();
        DataGrid.ItemsSource = LoadFile();   
    }
 public class Files
        {
            public string File { get; set; }
            public string Duration { get; set; }
            public string Status { get; set; }  
        }

Dictionary<Files, string> files = new Dictionary<Files, string>();

        private Dictionary<Files, string> LoadFiles()
        {
            return files;
        }
public主窗口()
{
初始化组件();
DataGrid.ItemsSource=LoadFile();
}
公共类文件
{
公共字符串文件{get;set;}
公共字符串持续时间{get;set;}
公共字符串状态{get;set;}
}
字典文件=新字典();
专用字典加载文件()
{
归还文件;
}

我希望在字典为空时创建列。有什么建议吗?

使用字典,并更改LoadFiles()以返回列表y,最终返回files.Keys.ToList()?您可以将DataGrid?的XAML代码放在代码的上半部分,没有未初始化的内容。但在下一个示例中,您正在初始化字典,但它既不初始化文件也不初始化字符串()。因此,我认为只有在加载前为文件和字符串添加1个值,才能生成列。您可以在添加实际值时删除它