2008-09-29 4 views
2

하나의 페이지에서 서로 다른 두 메뉴간에 공유하고 싶은 정의 된 MenuItem이 있습니다. 메뉴에는 두 메뉴간에 동일한 기능이 포함되어 있으며 두 개의 복사본이 필요하지 않습니다. 어쨌든 MenuItem을 Page.Resources에 정의하고 아래의 ContextMenu XAML에서 참조 할 수 있습니까? 당신이 앤 매치를 혼합 싶기 때문에WPF의 컨텍스트 메뉴와 일반 메뉴간에 메뉴 정의를 공유하는 방법

<Page.Resources> 
    <MenuItem x:Key="123"/> 
</Page.Resources> 

<ContextMenu> 
    <MenuItem>Something hardcoded</MenuItem> 

    <!-- include shared menu here --> 

</ContextMenu> 

답변

3

나는 x : Shared = "False"를 메뉴 항목 자체에 설정하여이 작업을 수행했습니다. 리소스는 기본적으로 리소스를 사용하는 각 위치 (모든 용도에서 하나의 인스턴스를 의미 함)에서 공유되므로이 기능을 끄면 매번 리소스의 새로운 "복사본"이 만들어집니다. 그래서

는 :

<MenuItem x:Key="myMenuItem" x:Shared="False" /> 

당신은 여전히 ​​그것의 "복사"를 얻을 것이다, 그러나 당신은 단 하나 개의 장소에 정의해야합니다. 도움이되는지 확인하십시오.

<StaticResource ResourceKey="myMenuItem" /> 
1

은 ... 나는 "SharedMenuItems"의존성 속성과 메뉴 아이템 의존성 속성이 그의 ContextMenu에서 상속되는 사용자 지정 컨트롤을 만들 것입니다. 이렇게하면 두 세트를 병합하는 방법을 제어자가 결정할 수 있습니다. 이 예제를 원하면 알려 주시기 바랍니다.

+0

이것은 정확한 질문에 대답하지는 못했지만, 좋은 해결책 인 것 같습니다. 나는 그것을 시도 할 것이다. 감사. –

+0

문제가 있으면 알려주십시오 .. 코드를 게시 할 수 있습니다/xaml이 작업을 수행 할 수 있습니다. – Phobis

0

옵션의 수 : 가) 데이터 바인딩의 ContextMenu 또는 동일한 기본 컬렉션에 메뉴 및 사용 항목 템플릿 등 작업 B로)를 사용하여 명령 당신은 당신의 메뉴 정의에 다음과 같이 사용 , 그리고 명령 바인딩의 집합에 대한 데이터 바인딩