我有一个自定义控件,其中包含放置在Viewbox中的Canvas。这允许我调整控件的大小,并且Canvas内部的所有内容都能很好地扩展。
令我烦恼的是,要求停止控制中任何文本缩放的要求已经抬头了。所有其他控件(主要是图形)应该缩放,但不能缩放文本。在调整大小时,文本应移动到正确的位置,但字体应保持不变。
任何想法如何做到这一点?
答案 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>