调整容器大小而不调整文本控件的大小

时间:2014-01-23 16:02:35

标签: wpf canvas controls

我有一个自定义控件,其中包含放置在Viewbox中的Canvas。这允许我调整控件的大小,并且Canvas内部的所有内容都能很好地扩展。

令我烦恼的是,要求停止控制中任何文本缩放的要求已经抬头了。所有其他控件(主要是图形)应该缩放,但不能缩放文本。在调整大小时,文本应移动到正确的位置,但字体应保持不变。

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分: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>