-
ItemsControl 에서 마우스 우클릭으로 항목 선택하기dev/WPF 2010. 9. 6. 12:15
리스트 기반의 컨트롤에서 선택되지 않은 항목을 마우스 우클릭하여 팝업메뉴등을 열때,
기본적으로 해당 Item 이 선택되지 않는데 이를 선택되도록 할 수 있다.
http://hoons.kr/board.aspx?Name=qasivlerlight&Mode=2&BoardIdx=37379&Key=&Value=
의 답변에 나온 링크로 바로 해결 가능하다.http://social.msdn.microsoft.com/forums/en-US/wpf/thread/b980bac3-3fa6-4a84-b572-e53ce28c64f3
를 보면 아래와 같다.<TreeView>
<TreeView.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="TreeViewItem.MouseRightButtonDown" Handler="TreeViewItem_MouseRightButtonDown"/>
</Style>
</TreeView.Resources>
</TreeView>
private void TreeViewItem_MouseRightButtonDown(Object sender, MouseButtonEventArgs e)
{
TreeViewItem item = sender as TreeViewItem;
if (item != null)
{
item.IsSelected = true;
e.Handled = true;
}
}
이때 커스텀 데이터를 데이터 소스로 컨트롤에 바인딩하여도 상관은 없다.
컨트롤이 암시적으로 Item 하나씩을 기본 컨트롤로 감싸고 있다.
예를들어 TreeView 는 TreeViewItem 이다.
그리고 sender as TreeViewItem 으로 TreeViewItem 객체를 얻을수 있고, (sender as TreeViewItem).Header 로 실제 바인딩된 커스텀 데이터의 객체를 얻을수 있다.