2010-07-16 91 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

相关问题