GridView를 사용하여 Windows 8 Metro 응용 프로그램 (C#, XAML)을 구축 중이며 사용자가 클릭 한 GridViewItem 근처에 팝업을 표시하고 싶습니다. 클릭 이벤트 인수를 통해 GridViewItem UIElement를 가져오고 좌표를 사용하여 내 팝업을 배치 할 위치를 결정할 계획이었습니다.Windows 8 Metro : 클릭 한 GridViewItem을 얻는 방법?
그러나 실제로 클릭 한 실제 GridViewItem UIElement에 대한 참조를 얻는 방법을 찾지 못했습니다! 나는 아래 해봤 이벤트가있는 EventArgs를 통해서만 DataContext를 노출하는 것, 그리고 실제 UIElement에 : 소스가 컬렉션에 바인딩과
object sender // is the GridView
ItemClickEventArgs.ClickedItem // is the DataContext of the GridViewItem
ItemClickEventArgs.OriginalSource // is the GridView
SelectionChangedEventArgs.OriginalSource // is null
SelectionChangedEventArgs.AddedItems.First() // is the DataContext of the GridViewItem
이 중요한 경우, 내 GridView.ItemSource는 CollectionViewSource이며, 뷰 모델의
내가 간과 한 일부 이벤트를 통해 클릭 한 GridViewItem을 가져올 수 있습니까? 그렇지 않다면, 그 문제를 해결하기 위해 어떤 각도로 조사해야합니까? PointerPressed 이벤트를 통해 GridView와 관련된 클릭 좌표를 가져올 수는 있습니다. 그런 식으로 항목을 찾으려면 어떻게해야하는지 알지만 실제로 그 경로를 따라갈 필요가 없기를 바랍니다.
감사합니다. VisualTreeHelper.FindElementsInHostCoordinates()는 PointerPressed 이벤트의 지정된 지점에서 UIElements 컬렉션을 반환하는 GridViewItem까지 필터링 할 수있는 방법입니다. – user1454265