2009-05-13 2 views
0

TreeViewItem에는 마우스 오른쪽 버튼 클릭 메뉴가 Style으로 적용되도록 TreeView 설정이 있습니다. 뭔가 같은 다음 TreeViewItem로 사용되는 객체에서 온TreeViewItem의 컨텍스트 메뉴는 TreeViewItem의 메서드를 호출합니까?

<Grid.Resources> 
    <ContextMenu x:Key="contextMenu"> 
     <MenuItem Header="Save" IsEnabled="{Binding Path=Saveable}"/> 
     <MenuItem Header="Copy" IsEnabled="{Binding Path=Copyable}"/> 
     <MenuItem Header="Remove" IsEnabled="{Binding Path=Removeable}"/> 
    </ContextMenu> 
    <Style TargetType="TreeViewItem"> 
     <Setter Property="ContextMenu" Value="{StaticResource contextMenu}" /> 
    </Style> 
</Grid.Resources> 

, 저장 기능 제공 복사 가능하고 제거 가능한 있습니다 속성.

사용자가 MenuItem을 클릭하면 선택한 개체의 적절한 방법을 클릭합니다. 따라서 "Save"MenuItem을 클릭하면 object.Save()이 호출되고 "Copy"는 object.Copy() 등이 호출됩니다. 그러나 구문이 어떻게 보이는지 또는 일반적인 WPF 스타일의 관점에서 아이디어가 실제로 허용되는지 여부는 확실하지 않습니다. 포괄적 인 창에서 새 이벤트 핸들러를 만들 수는 있지만 선택한 항목 자체가 이벤트를 처리하는 것을 선호합니다.

생각하십니까?

감사합니다.

답변

2

불행히도, 나는 이것을하는 자동화 된 방법이 있다고 생각하지 않습니다. 가장 가까운 옵션은 ContextMenu의 각 항목에 RoutedUICommand을 설정 한 다음 클래스에 각각 CommandBinding을 작성하는 것입니다. 이들을 TreeViewItem으로 이동 시키려면 TreeViewItem을 서브 클래스 화하고 거기에 CommandBindings을 설정해야 할 것입니다.

내가 생각하는 한 가지 옵션은 TreeViewItem 스타일에 MenuItem.ClickEventSetter을 추가하는 것입니다. 그러나 이는 작동하지 않습니다. ContextMenu의 항목이 TreeViewItems과 다른 시각적 트리에 있기 때문일 수 있습니다.