Как вы получаете РЕАЛЬНОЕ положение объектов в серебряном свете? - PullRequest
0 голосов
/ 30 июня 2011

Как вы получаете РЕАЛЬНОЕ положение объектов в серебряном свете?

У меня изображение заголовка по центру экрана. Когда я делаю окно браузера меньше, очевидно, левая сторона заголовка исчезает с экрана. Узнать фактическую позицию полезно, если вы хотите расположить объекты поверх изображения.

Я фиксирую Content_Resized и запускаю небольшой тест:

        if (App.Current.Host.Content.ActualWidth > header.Width)
        {
            TEST = Canvas.GetLeft(header);
        }
        else
        {
            TEST = Canvas.GetLeft(header);

        }

TEST всегда возвращает ноль.

РЕДАКТИРОВАТЬ: заголовок сидит на сетке вместо холста. «Ну, есть твоя проблема ...» Так что лучше задать вопрос. Как бы получить поля изображения, сидящего на сетке?

Ответы [ 2 ]

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

Я, вероятно, должен просто ответить на вопрос, но, как найти положение элемента относительно другого, возможно, что-то, на что уже был дан ответ (я и другие) здесь и в другом месте в Интернете.

Однакоесли ваша цель - поместить элемент поверх изображения, поместите изображение в Grid, а затем добавьте элемент как дочерний элемент Grid.Таким образом, вы назначаете относительное положение над изображением в качестве поля элемента и позволяете системе макета Silverlight делать все остальное.

Как общее правило, если вы чувствуете, что вам нужно написать код для перемещения, когдаразмер вещей изменится, если вы не пишете пользовательскую панель или что-то, что, возможно, неправильно используете систему макетов Silverlight.

Редактировать :

Попробуйте этот эксперимент: -

 <Grid x:Name="LayoutRoot">
    <Grid x:Name="headerContainer" Margin="50, 60, 0, 0" HorizontalAlignment="Left" VerticalAlignment="Top">
        <Image Source="YourLargeImage" />
        <Image Source="YourSmallerImage" HorizontalAlignment="Center" VerticalAlignment="Top" />
    </Grid>
 </Grid>

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

0 голосов
/ 30 июня 2011

Я получил это работает.

Прежде всего, эти изображения на сетке, а не на холсте. Но переключение сетки на холст вызвало множество других проблем, одна из которых заключается в том, что я не мог центрировать изображение заголовка, как раньше.

Решение состояло в том, чтобы изменить поле меньшего изображения, расположенного поверх большого заголовочного изображения, при изменении размера контента следующим образом:

blankbarimage.Margin  = new Thickness((App.Current.Host.Content.ActualWidth - header.Width) / 2, 0, 0, 0);

и, кстати, вы создаете метод с измененным размером контента, подобный этому:

App.Current.Host.Content.Resized += new EventHandler(Content_Resized);

Итак, чтобы ответить на мой собственный вопрос, вы получите РЕАЛЬНОЕ положение объекта в серебряном свете (если они находятся на сетке), посмотрев на настройки полей.

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