Как настроить границы прямоугольника от холста к другому холсту? - PullRequest
1 голос
/ 30 июня 2010

У меня есть следующая структура в XAML:

<Grid>
  <ItemsControl x:Name="Items" ItemsSource="{Binding Path=Pages}" Grid.Row="0" Grid.Column="0">
    <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical" />
      </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <!-- Display a white page for each page item -->
        <local:PageView Margin="0, 25, 0, 0" />
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>

  <!-- Layer used for displaying preview of drawn shape -->
  <local:PreviewLayer x:Name="PreviewLayer" Grid.Row="0" Grid.Column="0"/>
</Grid>

Клиент будет рисовать на слое предварительного просмотра форму, пусть будет прямоугольник.После завершения рисования фигура будет добавлена ​​на страницу ниже фигуры.

Моя проблема в том, что X, Y полученного прямоугольника находится в системе координат PreviewLayer.Как я могу преобразовать границы прямоугольника из PreviewLayer в PageView?

В настоящее время я получаю необходимый pageView с помощью (переменная page получена в другом месте)

UIElement pageView = (UIElement)this.Items.ItemContainerGenerator.ContainerFromItem(page);

Но я не знаю, как вернуть координаты pageView.Использование Canvas.GetLeft(pageView) возвращает NaN.

Как получить границы pageView?

1 Ответ

1 голос
/ 30 июня 2010

Я смог понять это с помощью TranslateToPoint.Сначала это не работало, пока я не подумал, что ContainerFromItem возвращает контейнер элемента (что логично, если вы прочитали название функции, но я думаю, что это произошло над моей головой).

Получение первого дочернего элемента контейнера вернуло элемент, который мне был нужен для TranslateToPoint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...