如何从双击事件(WPF)的列表视图中获取值

时间:2010-07-16 11:38:32

标签: c# wpf

我有一个问题我想要获取行详细信息当我点击我的listview上的那一行时我知道它是如何以窗口形式执行但是它在WPF / i中使用C#wpf不同请帮助我 提前致谢 沙善

2 个答案:

答案 0 :(得分:1)

如果您有对ListView的引用,则可以使用SelectedItem属性。您还可以将SelectedItem绑定到ViewModel上的属性,然后从那里读取值。最后,您可以在ListView上将IsSynchronizedWithCurrentItem设置为True,然后使用:

CollectionViewSource.GetDefaultView(sourceList).CurrentItem

其中sourceList是ListView的ItemsSource。

答案 1 :(得分: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;
    }

我不知道这是否会让你更进一步,但它应该可以正常工作。

哦,顺便说一句,您还可以将{event}添加到ListView使用SelectedItem属性,但对我来说会导致一些问题,例如,如果您点击列标题选择项目时,或者空格,它也会触发事件处理程序。因此,我宁愿使用我的第一个提议的方法。