listview에서 상황에 맞는 메뉴를 사용하여 해당 항목의 원래 데이터가 필요한 코드를 실행하려고합니다.ContextMenu MenuItem을 실행할 때 ListView에서 클릭 한 ListViewItem 결정
나는 처음에 그냥 이런 짓을 :
XAML :
<ListView x:Name="lvResources" ScrollViewer.VerticalScrollBarVisibility="Visible">
<ListView.Resources>
<ContextMenu x:Key="resourceContextMenu">
<MenuItem Header="Get Metadata" Name="cmMetadata" Click="cmMetadata_Click" />
</ContextMenu>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource resourceContextMenu}" />
</Style>
</ListView.ItemContainerStyle>
...
C 번호 :
private void cmMetadata_Click(object sender, RoutedEventArgs e)
{
// code that needs item data here
}
하지만 원래 목록보기 항목이 그런 식으로 접근 할 수없는 것으로 나타났습니다.
MouseDown 이벤트를 가로 채고 클릭 한 listviewitem에 비공개 필드를 설정하는 것과 같이이 문제를 해결하는 방법에 대한 몇 가지 전술을 읽었습니다.하지만 저와 잘 어울리지는 않습니다. 그런 식으로 데이터를 전달하십시오. WPF는 쉽지 않을까요? :) 나는이 SO question과이 MSDN forum question을 읽었지만,이 기사가 내 경우에는 효과가없는 것으로 보이기 때문에 여전히 실제로 어떻게해야하는지 잘 모르겠습니다. 상황에 맞는 메뉴로 클릭 한 항목을 전달하는 더 좋은 방법이 있습니까?
감사합니다.
+1 멋지고 간단한 해결책! – patjbs
클릭 한 내용을 확인하기 위해 listview 선택 만 사용하는 것에 대해 언급하고자합니다. 사용자가 여러 항목을 선택했지만 클릭 한 항목에 대해 코드를 실행하려는 경우에는 제대로 작동하지 않습니다.이 경우 검색 할 수 없습니다. – patjbs
+1 그것은 나를 많이 도왔습니다. –