2010-07-16 52 views

回答

1

如果你有到ListView一個參考,你可以使用SelectedItem屬性。您還可以將SelectedItem綁定到ViewModel上的屬性,然後從中讀取值。最後,你可以設置IsSynchronizedWithCurrentItem爲True您的ListView,然後使用:

CollectionViewSource.GetDefaultView(sourceList).CurrentItem 

其中SOURCELIST是ListView控件的的ItemsSource。

1

您可以通過添加以下XAML到您的<Window.Resources>添加事件處理程序到您的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使用SelectedItem屬性,但對於我來說,這會導致一些問題,例如,如果您在項目中單擊柱狀標頭或空白區域被選中,它也會觸發事件處理程序。因此,我寧願使用我提出的第一種方法。

+0

曼聯值得一票高達 這幫助我: 私人無效一個MyEventHandler(對象發件人,MouseButtonEventArgs E) { ListViewItem的項目=(ListViewItem的)發件人; SongData Song =(SongData)Item.Content; // Example MessageBox.Show(Song.Title +「by」+ Song.Artist); e.Handled = true; } – 2015-11-08 17:40:46

+0

其實我是一個Java/Android開發人員在Java/Android有廣泛的知識,但在姐妹的項目上工作,必須在.net中,所以我正在研究基於wpf xaml的應用程序,並且我是新來的C#wpf .. 這真的幫我 – 2015-11-08 17:42:43

相關問題