2011-05-03 5 views
0

내가 SelectedItem을 살펴보고 ToString()을 출력하여 클립 보드에 레코드를 가져올 수있는 코드가 있습니다.WPF ListView - 개별 셀을 복사하는 방법

SelectedItem에서 해당 셀만 복사하기 위해 사용자가 마우스 오른쪽 버튼을 클릭하는 것을 어떻게 감지 할 수 있습니까?

예를 들어 차용자 정보가 있고 사용자가 성을 마우스 오른쪽 버튼으로 클릭하면 성을 클립 보드에 복사 할 수있는 권한을 부여하고 싶습니다.

감사합니다.

UPDATE : 여기

조쉬에 의해 제안 내가 사용하는 코드는, 그것은 좋은 일 :

private void BorrowerInfoCopyClicked(object sender, RoutedEventArgs e) 
     { 
      BorrowerViewModel vm = this.DataContext as BorrowerViewModel; 
      if (vm != null) 
      { 
       Clipboard.SetData(DataFormats.Text, vm.CurrentTextBlockText); 
      } 
     } 

     private void AddressCopyClicked(object sender, RoutedEventArgs e) 
     { 
      BorrowerViewModel vm = this.DataContext as BorrowerViewModel; 
      if (vm != null) 
      { 
       Clipboard.SetData(DataFormats.Text, vm.CurrentTextBlockText); 
      } 
     } 

     private void lstViews_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      BorrowerViewModel vm = this.DataContext as BorrowerViewModel; 
      if (vm != null) 
      { 
       if (e.OriginalSource is TextBlock) 
       { 
        TextBlock txtBlock = e.OriginalSource as TextBlock; 
        vm.CurrentTextBlockText = txtBlock.Text; 
       } 

} }

답변

2

내가 PreviewMouseRightButtonDown 이벤트를 처리하여이 작업을 완료했습니다 ListView에서 e.OriginalSource가 TextBlock인지 확인하십시오. 그렇다면 클립 보드에 txtBlk.Text를 복사하십시오. 이 코드는 ListView가 포함 된 뷰의 코드 숨김 또는 ListView에 연결하는 동작 중 하나 일 수 있습니다. 컨텍스트 메뉴를 사용하여 복사 작업을 수행해야하는 경우 TextBlock에 대한 참조를 저장하는 데 사용하는 TextBlock 필드가 있어야하며 대신 MenuItem의 클릭 (또는 명령 실행)에 응답하는 메서드에서 TextBlock을 참조하십시오.

+0

조쉬, 신속한 답변을 부탁드립니다. 그것은 트릭을했다. "복사"에 대한 상황에 맞는 메뉴를 사용하고 있습니다. 여기 내 코드가있다. 다시 한 번 감사드립니다! – ElMatador