2011-02-02 4 views
1

wpf 도구 모음의 표준 스타일을 변경하고 싶습니다. 내가 도구 모음에 항목을 추가하는 경우, 이러한 항목이 표시되지 않습니다,WPF 도구 모음 - 사용자 지정 스타일

<Style x:Key="{x:Type ToolBar}" TargetType="{x:Type ToolBar}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ToolBar}"> 
         <Border> 
          <DockPanel VerticalAlignment="Stretch" Height="38"> 
          </DockPanel> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

그러나 : 나는 잘 작동 컨트롤 자료에 다음과 같은 스타일을 사용

<ToolBar x:Name="myToolbar"> 
     <Label>test</Label> 
    </ToolBar> 

내가 추가하지 않으 템플릿의 항목은 있지만 해당 템플릿을 사용하는 특정 툴바에 있습니다.

누구든지 내게 힌트를 줄 수 있습니까?

답변

0

템플릿은 컨트롤이 렌더링되는 방법을 정의합니다. 일부 컨트롤의 경우 컨트롤이 조작 할 템플릿 내에서 명명 된 요소를 찾을 것으로 예상되는 다른 모든 것에 대한 템플릿 내에 모든 것이 있습니다. 예를 들어

http://msdn.microsoft.com/en-us/library/aa970772.aspx

, 그것은에 PART_ToolBarPanel라는 이름의 요소를 찾을 필요가 : 도구 모음 템플릿을 보면 도구 모음이 PART_ToolBarPanel라는 요소와 템플릿 내에서 PART_ToolBarOverflowPanel라는 이름의 요소를 찾을 것으로 기대하고 있음을 알 수 도구 모음에 항목을 추가하려면

새 요소를 도구 모음 템플릿에 추가하려면 일반적으로 기존 템플릿을 복사 한 다음 요소 추가/제거를 시작합니다.

5

문제는 사용자가 도구 모음의 컨트롤 템플릿을 사용자가 직접 바꾸 었다는 것입니다. 그러나 항목을 표시해야하는 템플릿을 지정하지 않았습니다.

<ControlTemplate TargetType="{x:Type ToolBar}"> 
    <Border> 
     <DockPanel VerticalAlignment="Stretch" Height="38"> 
      <ItemsPresenter/> 
     </DockPanel> 
    </Border> 
</ControlTemplate> 

또는 템플릿 내부 패널에 IsItemsHost="True"을 설정하여 : 도구 모음의 항목 패널 (교체하려고하면,

<ControlTemplate TargetType="{x:Type ToolBar}"> 
    <Border> 
     <DockPanel IsItemsHost="True" VerticalAlignment="Stretch" Height="38"> 
     </DockPanel> 
    </Border> 
</ControlTemplate> 

그러나 일반적으로 당신은 ItemsPresenter를 추가하여 하나 그것을 할 것 내 두 번째 예제 에서처럼), ToolBar는 ToolBarPanel이 항목 패널 일 것으로 기대하기 때문에 작동하지 않습니다.