2011-01-16 7 views
1

화면에 정사각형을 그리는 사용자 정의 컨트롤을 만들었습니다. 이를 위해 OnRender 메서드를 재정의하고 사각형을 그립니다.WPF - 사용자 정의 컨트롤 ScrollViewer

이 사용자 지정 컨트롤을 WPF 창에 추가했습니다. 그러나 창 크기를 조정할 때 사용자 지정 컨트롤의 일부가 숨겨져 있습니다. 스크롤바를 추가 한 후에 아무 것도하지 않았지만 스크롤바가 나타납니다.

내가 IScrollInfo를 구현해야하는 곳을 읽었으나 매우 간단한 작업을하려는 것 같습니다.

누구든지 나를 도울 수 있다면 크게 감사하겠습니다.

많은 감사,

매트

답변

2

ScrollViewer은 임의의 내용을 스크롤 할 수 있으므로 논리적 스크롤, 즉 픽셀이 아닌 줄을 사용하려는 경우가 아니라면 IScrollInfo를 구현할 필요가 없습니다.

사용자 지정 컨트롤에서 MeasureOverride을 구현하지 않으면 레이아웃의 측정 단계에 참여하지 않고 ScrollViewer은 스크롤 가능한 영역을 크게 알 수 없습니다.

<DockPanel> 
    <ScrollViewer Height="200" Width="250" HorizontalScrollBarVisibility="Visible"> 
     <Grid Height="400" Width="400"> 
      <Grid.Background> 
       <DrawingBrush x:Name="GridBrush" 
        Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile"> 
        <DrawingBrush.Drawing> 
         <DrawingGroup> 
          <GeometryDrawing Brush="#CCCCFF"> 
           <GeometryDrawing.Geometry> 
            <RectangleGeometry Rect="0,0 10,1" /> 
           </GeometryDrawing.Geometry> 
          </GeometryDrawing> 
          <GeometryDrawing Brush="#CCCCFF"> 
           <GeometryDrawing.Geometry> 
            <RectangleGeometry Rect="0,0 1,10" /> 
           </GeometryDrawing.Geometry> 
          </GeometryDrawing> 
         </DrawingGroup> 
        </DrawingBrush.Drawing> 
       </DrawingBrush> 
      </Grid.Background> 
     </Grid> 
    </ScrollViewer> 
</DockPanel> 
0

ScrollViewer는 사용할 자식의 DesiredSize 스크롤이 필요한지 여부에 대한 결정 등. 사용자 지정 컨트롤이 Measure()을 재정의합니까? 사용자 정의 컨트롤에 대한 코드를 게시하면 도움이 될 것입니다.

+0

하이 켄트 :

여기 그래프 종이 배경 스크롤 Grid의 공단 XAML 전용 예이다. 아니, 나는 그 방법을 오버라이드하지 않았다. 오직 내가 말했던 것 (OnRender). 내 사용자 지정 컨트롤은 설명 된 것보다 약간 복잡하므로 코드를 게시하면 다소 혼란 스러울 것입니다. –

관련 문제