我有一个问题我想要获取行详细信息当我点击我的listview上的那一行时我知道它是如何以窗口形式执行但是它在WPF / i中使用C#wpf不同请帮助我 提前致谢 沙善
答案 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
属性,但对我来说会导致一些问题,例如,如果您点击列标题选择项目时,或者空格,它也会触发事件处理程序。因此,我宁愿使用我的第一个提议的方法。