2014-01-23 1 views
0

저는 Viewbox 안에 캔버스가 들어있는 사용자 정의 컨트롤이 있습니다. 이렇게하면 컨트롤의 크기를 조절할 수 있고 캔버스 내부의 모든 것이 아름답게 조절됩니다.텍스트 컨트롤의 크기를 조정하지 않고 컨테이너 크기 조정

컨트롤 내에서 텍스트의 크기 조정을 중지해야한다는 부담이 커졌습니다. 다른 모든 컨트롤 (주로 그래픽)의 크기는 조정해야하지만 텍스트는 조정하지 않아야합니다. 텍스트는 크기가 조정될 때 올바른 위치로 이동해야하지만 글꼴은 동일하게 유지되어야합니다.

아이디어가 있습니까?

답변

0

많은 머리가 긁힌 후 비교적 간단한 해결 방법을 발견했습니다.

컨트롤의 텍스트를 클릭 할 필요가 없으므로 모든 그래픽을 zOrder 1 및 모든 텍스트를 zorder 0으로 다른 캔버스 안에 넣었습니다. 그리드에 그리기 때문에 오버랩 :

<ControlTemplate TargetType="{x:Type local:ContourPlot}"> 

<Border Background="{TemplateBinding Background}" 
     BorderBrush="{TemplateBinding BorderBrush}" 
     BorderThickness="{TemplateBinding BorderThickness}"> 
    <Grid> 
     <Viewbox> 
      <Border BorderBrush="Black" BorderThickness="1"> 
       <Canvas x:Name="cvGraph" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" > 
        <Rectangle Canvas.Left="40" Canvas.Top="31" Width="48" Height="41" Fill="AliceBlue"/>     
       </Canvas> 
      </Border> 
     </Viewbox> 
     <Canvas Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" > 
      <Label x:Name="lblTest" Canvas.Left="0" Canvas.Top="10" Content="Label" FontSize="12" /> 
     </Canvas> 
    </Grid> 
</Border> 

</ControlTemplate> 
관련 문제