2012-03-28 5 views
0

Windows 탐색기를 만들려고합니다. treeView 및 listView를 Windows 탐색기처럼 채우는 데 성공했지만 listView에서 두 번 클릭하여 파일을 여는 데 문제가 있습니다.ListView에서 MouseDoubleClick 이벤트로 파일 열기

이 내가 지금까지 무엇을 가지고 :

try 
     { 
      //clears the collection so the listview has only the files of the folder thats clicked on 
      _fileDetails.Clear(); 


      DirectoryInfo dirInfo = new DirectoryInfo(SelectedImagePath); 
      FileInfo[] info = dirInfo.GetFiles(); 

      foreach (FileInfo fileInfo in info) 
      { 
       //adds files to the collection with its properties 
       _fileDetails.Add(new Details 
       { 
        FileName = fileInfo.Name, 
        Size = fileInfo.Length.ToString(), 
        DateCreated = fileInfo.CreationTime.ToString(), 
        DateModified = fileInfo.LastWriteTime.ToString(), 
        RevNumber = "?", 
        User = "?" 
       }); 

      } 
     } 

fileDetails 내 ObservableCollection에 있습니다.

마우스 이벤트 :

protected void HandleDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     DependencyObject src = (DependencyObject)(e.OriginalSource); 
     while (!(src is Control)) 
      src = VisualTreeHelper.GetParent(src); 
     MessageBox.Show("*** Double clicked on a " + src.GetType().FullName +"********************" + sender.ToString()); 
    } 

바인딩 대신 마우스 이벤트에 메시지 박스의

<ListView Height="335" HorizontalAlignment="Right" Margin="0,12,12,0" Name="fileExplorerView" VerticalAlignment="Top" Width="509" Grid.Column="1" ItemsSource="{Binding ElementName=This, Path=fileDetails}"> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick"/> 
      </Style> 
     </ListView.ItemContainerStyle> 
     <ListView.View> 

      <GridView> 
       <GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding FileName}"/> 
       <GridViewColumn Header="Size" Width="100" DisplayMemberBinding="{Binding Size}"/> 
       <GridViewColumn Header="Date Created" Width="100" DisplayMemberBinding="{Binding DateCreated}"/> 
       <GridViewColumn Header="Time Created" Width="100" DisplayMemberBinding="{Binding DateModified}"/> 
       <GridViewColumn Header="Revision Number" Width="100" DisplayMemberBinding="{Binding RevNumber}"/> 
       <GridViewColumn Header="Modified By" Width="100" DisplayMemberBinding="{Binding User}"/> 

      </GridView> 

     </ListView.View> 
    </ListView> 

, 난 내가 캔트의 files.The의 문제가 열 프로세스를 사용합니다 선택한 파일의 경로를 가져 오는 방법을 알아내는 것 같습니다.

감사

모든 도움을 이해할 수있을 것이다.

답변

0

뭔가

같은
var item = (FrameworkElement)sender; 
var file = (Details)item.DataContext; 
var path = file.Path; // Your Details class should save the FileInfo.FullName! 

(왜 당신은 어쨌든 Details 클래스가? 난 그냥 FileInfo 객체를 사용하는 것이 할)

+0

감사 H.B, 당신은 천재! –