Вы можете использовать сетку для добавления слоев в макет. Таким образом, вы можете увеличить один набор элементов и оставить другой набор без увеличения.
<Grid>
<Viewbox>
<!-- Controls to zoom -->
</Viewbox>
<!-- Control to exclude from zoom -->
</Grid>
Порядок поля просмотра и других элементов управления в XAML будет зависеть от того, какой слой отображается сверху.
Если это не совсем то, что вы хотите, оставьте комментарий, и я вернусь к ответу.
РЕДАКТИРОВАТЬ Вы хотите, чтобы элемент управления без увеличения был расположен относительно (0,0) Viewbox
. Это произойдет в этой ситуации, поскольку оба дочерних элемента сетки находятся в ячейке (0,0), что означает, что их верхние левые углы выровнены. Можете ли вы привести пример того, что у вас есть в XAML, и что с ним не так (возможно, отредактируйте исходный вопрос)?
Вот несколько примеров XAML:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Background="Green">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Viewbox>
<Rectangle Fill="Yellow" Width="10" Height="10" />
</Viewbox>
<TextBlock>I am positioned at (0,0)</TextBlock>
<TextBlock Margin="50,50">I am positioned at (50,50)</TextBlock>
</Grid>
</Page>
Это дает такой макет:
http://img20.imageshack.us/img20/2045/layout1m.png
Но обратите внимание, что когда высота уменьшается, сетка становится шире, чем поле просмотра, и поэтому содержимое раскладывается следующим образом:
http://img20.imageshack.us/img20/9397/layout2i.png
Я думаю, это не то, что вы хотите. В этом случае вы используете холст и переходите к следующему:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Background="Green">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Viewbox>
<Rectangle Fill="Yellow" Width="10" Height="10" />
</Viewbox>
<Canvas>
<TextBlock>I am positioned at (0,0)</TextBlock>
<TextBlock Margin="50,50">I am positioned at (50,50)</TextBlock>
</Canvas>
</Grid>
</Page>
Что выглядит так:
http://img20.imageshack.us/img20/6743/layout3i.png