2011-08-25 3 views
1

itemscontrol에서 파생 된 자체 컨트롤이 있습니다. ItemsControl 내부에있는 캔버스를 ItemsPanel로 사용하고 있습니다. 왜 f.e. 항목의 창 크기를 변경하면 itemscontrol 외부에도있을 수 있습니까?wpf items 컨트롤 외부 컨트롤 항목

템플릿 : 부모의 경계 밖에서 이동하는 아이들을 일으킬 수있는 부모의 크기를 조정하여 정렬 및 여백 설정에 따라

<Style TargetType="{x:Type local:Widget}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:Widget}"> 
       <Grid Background="{TemplateBinding Background}"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 

        <Border Grid.Row="0" BorderThickness="2" BorderBrush="Black" Background="WhiteSmoke" 
          x:Name="Part_Header"> 
         <ContentPresenter ContentSource="Header"/> 
        </Border> 
        <Border Grid.Row="1" BorderThickness="2" BorderBrush="Black" Background="WhiteSmoke"> 
         <Grid> 
          <ContentPresenter /> 

          <ResizeGrip x:Name="Part_Resize" 
           HorizontalAlignment="Right" 
           VerticalAlignment="Bottom" 
           Cursor="SizeNWSE" /> 
         </Grid> 

        </Border> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Canvas는 항상 요소의 절대 위치 지정을 사용한다고 생각합니다. ItemsPanelTemplate을 DockPanel, StackPanel 또는 Grid로 전환하면 이러한 현상이 발생합니까? – Josh

+1

빠른 해결책은 ItemsPresenter를 ScrollViewer로 둘러싸는 것이 었습니다. 현재는 아무것도 스크롤하지 않지만 항목이이 영역에 묶여 있으며 창 크기가 작 으면 나머지 항목은 숨겨집니다 (예상했던 것처럼). – SACO

답변

0

:

<Style TargetType="{x:Type local:Dashboard}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:Dashboard}"> 
       <Grid> 
        <Border Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
         <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </Border> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 

    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <Canvas /> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

항목이 사용합니다. 가장 간단한 방법은 블렌드를로드하고 부모의 크기를 조정하여 포함 된 컨트롤이 어떻게 움직이는 지 확인하는 것입니다. Blend (정렬 및 여백을 변경)의 앵커를 조정하면 이동 이유를 해결할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 나중에 이것을 조사 할 것이고, 현재 위의 빠른 해결책은 코멘트로 충분하다. – SACO