WPF ViewBox Zoom

2

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

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

Теги:
wpf
zoom
viewbox

1 ответ

5
Лучший ответ

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

<Grid>
  <Viewbox>
    <!-- Controls to zoom -->
  </Viewbox>
  <!-- Control to exclude from zoom -->
</Grid>

Порядок окна просмотра и других элементов управления в XAML будет зависеть от того, какой слой появится сверху.

Если это не совсем то, что вы хотите, оставьте комментарий, и я вернусь к ответу.

РЕДАКТИРОВАТЬ. Вы хотите, чтобы unzoomed control располагался относительно (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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню