【问题标题】:Can't access public property of a class无法访问类的公共属性
【发布时间】:2017-12-30 14:47:46
【问题描述】:

我创建了一个具有 3 个属性的公共类。代码如下;

public class FileInformation
{
    public String Name { get; set; }
    public DateTime CreationTime { get; set; }
    public DateTime LastModified { get; set; }
}

我正在使用这个类来用本地文件夹中的文件填充 Datagrid。为此,我使用以下代码;

        DirectoryInfo di = new DirectoryInfo(@"db\");
        List<FileInfo> files = di.GetFiles("*.accdb").ToList();

        List<FileInformation> view1 = new List<FileInformation>();
        foreach (FileInfo file in files)
        {
            view1.Add(new FileInformation() { Name = file.Name, CreationTime = file.CreationTime, LastModified = file.LastWriteTime });
        }

        listview_openproject.ItemsSource = view1;

现在,我希望能够检测在数据网格中选择了哪些文件,所以我尝试了以下方法;

var selectedProject = listview_openproject.SelectedValue;

这给了我一个具有 3 个属性的对象 - Name、Creationtime 和 LastModified。到现在为止还挺好。我想访问属性“名称”,但我无法这样做。我希望我可以简单地写;

var selectedProjectName = selectedProject.Name;

但这不起作用。如何访问此属性?

VS 截图:

【问题讨论】:

  • 试过var selectedProject = (FileInformation) listview_openproject.SelectedValue ?
  • 尝试使用 var selectedProject = listview_openproject.SelectedValue 作为 FileInformation;

标签: c# wpf datagrid


【解决方案1】:

SelectedItem 属性返回列表绑定到的整个对象。请改用此属性:

FileInformation fi = (FileInformation)listview_openproject.SelectedItem;
String name = fi.Name;

【讨论】:

  • 这是 null 检查错误的情况之一。 fi 永远不应该为空,如果是,那么某处存在错误
  • @CamiloTerevinto 感谢您的洞察力,没错
猜你喜欢
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2011-01-11
  • 2014-01-26
  • 2021-03-02
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
相关资源
最近更新 更多