2017-12-30 82 views
0

私は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つのプロパティ、名前、作成時間、およびLastModifiedを持つオブジェクトを提供します。ここまでは順調ですね。私はattibute "Name"にアクセスしたいが、そうすることはできない。私は単純に書くことができると思った。

var selectedProjectName = selectedProject.Name; 

しかし、これは機能しません。このプロパティにアクセスするにはどうすればいいですか? VSから

スクリーンショット:

enter image description here

+1

'var selectedProject =(FileInformation)listview_openproject.SelectedValue'を試しましたか? –

+0

_varで試してくださいselectedProject = listview_openproject.SelectedValue as FileInformation; _ – Steve

答えて

2

SelectedItemプロパティは、あなたのリストがバインドされているオブジェクト全体を返します。代わりにこのプロパティを使用してください:

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

これはnullのチェックが間違っている場合の1つです。 'fi'は決してnullではないはずです。もしどこかにバグがあったら –

+0

ありがとう、魅力的です! –

+0

@CamiloTerevinto洞察に感謝します、そうです –

関連する問題