다음을 통해 공유


방법: 공유되는 ContextMenu 만들기

업데이트: 2007년 11월

ContextMenu를 리소스로 정의한 후 컨트롤의 ContextMenu 속성을 ContextMenu에 대한 참조로 설정하여 둘 이상의 컨트롤에서 ContextMenu를 공유할 수 있습니다. x:Shared 특성 속성을 설정하면 ContextMenu 하나를 여러 컨트롤이 공유할지 또는 각 컨트롤에 고유한 ContextMenu를 사용할지 지정할 수 있습니다.

예제

다음 예제에서는 ContextMenu를 리소스로 만들고 이에 대한 참조를 컨트롤 네 개에 할당합니다. 이 예제에서는 ContextMenux:Shared 특성을 true로 설정하기 때문에 컨트롤 네 개가 ContextMenu의 동일한 인스턴스를 공유합니다. 컨트롤 하나에서 ContextMenu의 첫 번째 MenuItem을 선택한 후 다른 컨트롤의 ContextMenu에도 해당 MenuItem이 선택되어 있는지 확인하여 결과를 테스트해 볼 수 있습니다.

<ContextMenu x:Key="SharedInstanceContextMenu" x:Shared="True">
  <MenuItem Header="This MenuItem is checkable" IsCheckable="True" />
  <Separator/>
  <MenuItem Header="This is a regular MenuItem" />
</ContextMenu>


...


<Button Margin="0,5,0,0" Background="LightBlue"
    Content="This Button has a ContextMenu"
    ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<Button Background="Pink"
    Content="This Button has the same ContextMenu"
    ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<CheckBox BorderBrush="Red"
    Content="This Check Box has the same ContextMenu"
    ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<CheckBox BorderBrush="Green" 
    Content="This Check Box has the same ContextMenu"
    ContextMenu="{DynamicResource SharedInstanceContextMenu}" />

다음 예제에서는 ContextMenu를 리소스로 만들고 이에 대한 참조를 컨트롤 네 개에 할당합니다. 이 예제에서는 ContextMenux:Shared 특성을 false로 설정하기 때문에 각 컨트롤에 ContextMenu의 새 인스턴스가 사용됩니다. 컨트롤 하나에서 ContextMenu의 첫 번째 MenuItem을 선택한 후 다른 컨트롤의 ContextMenu에는 해당 MenuItem이 선택되지 않았는지 확인하여 결과를 테스트해 볼 수 있습니다.

<ContextMenu x:Key="NonsharedInstanceContextMenu" x:Shared="False">
  <MenuItem Header="This MenuItem is checkable" IsCheckable="true" />
  <Separator/>
  <MenuItem Header="This is a regular MenuItem" />
</ContextMenu>


...


<Button Background="LightBlue" Margin="0,5,0,0"
    Content="This Button has a ContextMenu"
    ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<Button Background="Pink"
    Content="This Button has the same ContextMenu"
    ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<CheckBox BorderBrush="Red"
    Content="This Check Box has the same ContextMenu"
    ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<CheckBox BorderBrush="Green" 
    Content="This Check Box has the same ContextMenu"
    ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />

전체 샘플을 보려면 컨트롤 간에 공유되는 ContextMenu 샘플을 참조하십시오.

참고 항목

작업

방법: 비활성화된 컨트롤의 ContextMenu 사용

개념

ContextMenu 개요

참조

Menu

MenuItem