전공/WPF 삽질들..

ListBox Item Context 메뉴 호출

무한공백 2014. 3. 21. 15:40

ListBox에 Context 메뉴를 호출하는 방법은 아래와 같이 간단히 할 수 있다.

<ListBox.ContextMenu> ... </ListBox.ContextMenu>

이렇게 하면 아이템이 선택되지 않았을 경우도 ContextMenu가 나타난다. 


<ListBox  x:Name="listThumbnail" Width="..." Height="..." 
                 ItemsSource="{Binding thumb}"
                 ItemTemplate="{DynamicResource itemTemplate}" 
                 ItemsPanel="{DynamicResource panelTemplate}"
                 ... >

                <ListBox.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Menu1" Click="btn_Menu1" />
                        <MenuItem Header="..." Click="..." />
                    </ContextMenu>
                </ListBox.ContextMenu>
            </ListBox>


ListBox의 Item이 선택된 후에 Context 메뉴를 나타나게 하기 위해서는 

 ListBox의 DataTemplate 안에 StackPanel을 위치시키고, StackPanel의 ContextMenu를 호출한다.

---------------
<DataTemplate x:Key="itemTemplate" >
            <StackPanel Orientation="Vertical" Width="..." Height="..." >
                <StackPanel.ContextMenu>
                    <ContextMenu>
                       <MenuItem Header="Menu1" Click="btn_Menu1" />
                        <MenuItem Header="..." Click="..." />
                    </ContextMenu>
                </StackPanel.ContextMenu>
        </DataTemplate>
-------------------

이렇게 하면 Item이 선택되었을 때에만 메뉴가 나타난다..