WPF ViewBox Zoom - PullRequest
       25

WPF ViewBox Zoom

2 голосов
/ 25 августа 2009

Есть ли способ увеличить содержимое окна просмотра, кроме одного элемента управления? У меня есть окно просмотра с сеткой, и в этой сетке у меня есть некоторые элементы управления, и я пытаюсь увеличить все элементы управления в окне просмотра, кроме одного, возможно ли это?

Большое спасибо, Paulo

1 Ответ

5 голосов
/ 25 августа 2009

Вы можете использовать сетку для добавления слоев в макет. Таким образом, вы можете увеличить один набор элементов и оставить другой набор без увеличения.

<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

...