2010-07-16 7 views

답변

1

C#을 WPF 사용하여 WPF/메신저에서 다른 사전 shashank에서 덕분에 저를 도와주세요. SelectedItem을 ViewModel의 속성에 바인딩 한 다음 그 값을 읽을 수도 있습니다.

CollectionViewSource.GetDefaultView(sourceList).CurrentItem 

을 SOURCELIST리스트 뷰의 ItemsSource입니다 : 마지막으로, 당신은 사용 후 ListView를 true로 IsSynchronizedWithCurrentItem을 설정 할 수있다.

1

당신은 당신의 <Window.Resources>에 다음 XAML을 추가하여 ListViewItems에 이벤트 핸들러를 추가 할 수 있습니다

<Style TargetType="ListViewItem"> 
     <EventSetter Event="MouseDoubleClick" Handler="MyEventHandler" /> 
</Style> 

그런 다음 코드에서 이벤트 처리기를 추가해야합니다

private void MyEventHandler(object sender, MouseButtonEventArgs e) 
    { 
     ListViewItem MyListViewItem = (ListViewItem)sender; 
     MyClass MyObject = (MyClass)Item.Content; 

     e.Handled = true; 
    } 

을이 예에서 , MyObject에는 클릭 한 ListViewItem에 바인딩 된 개체가 포함되어 있습니다. 예를 들어, 내 프로젝트 중 하나에서 ObservableCollection<SongData> 바운드 ListView가 있습니다. 다음 코드를 사용합니다 :

private void MyEventHandler(object sender, MouseButtonEventArgs e) 
    { 
     ListViewItem Item = (ListViewItem)sender; 
     SongData Song = (SongData)Item.Content; 

     // Example 
     MessageBox.Show(Song.Title + " by " + Song.Artist); 

     e.Handled = true; 
    } 

이 경우 더 이상 얻을 경우 잘 모르겠지만 잘 작동합니다.

오, 그리고 ListView 속성에 이벤트 핸들러를 첨부 할 수도 있지만, 예를 들어, 항목을 표시하는 동안 열 머리글이나 공백을 클릭하면 나에게 약간의 문제가 발생합니다. 가 선택되면 이벤트 핸들러도 트리거됩니다. 따라서 나는 처음 제안한 접근법을 사용하려고한다.

+0

사람이 u는 투표까지 이 내게 도움을받을 자격 : 개인 무효이 MyEventAPIHandler (개체를 보낸 사람, MouseButtonEventArgs 전자) { 있는 ListViewItem 항목 = (ListViewItem이) 보낸 사람; SongData Song = (SongData) Item.Content; // 예 MessageBox.Show (Song.Title + "by"+ Song.Artist); e.Handled = true; } –

+0

사실 저는 Java/Android 개발자입니다. Java/Android에서 방대한 지식을 가지고 있지만 자매의 프로젝트에서 일하고 있습니다. 그래서 wpf xaml 기반 응용 프로그램에서 작업하고 있었고 C# wpf를 처음 사용했습니다. 정말 도움이됩니다. –

관련 문제