Анимация полей снизу Silverlight - PullRequest
4 голосов
/ 28 июня 2011

Я сейчас работаю с анимацией, у меня есть сетка, скрывающая панель поиска, нажатие на кнопку поиска перемещает сетку вниз, открывая параметры поиска.

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

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

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

<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin" Storyboard.TargetName="Grid">
            <DiscreteObjectKeyFrame KeyTime="0" Value="0"/>
            <DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="170"/>
        </ObjectAnimationUsingKeyFrames>

Проблема в том, что это применяет поле ко всем сторонам объекта, я хотел бы только применить поле к нижней части. К сожалению, приведенный ниже код не работает

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

Спасибо

1 Ответ

4 голосов
/ 28 июня 2011

Свойство Margin имеет тип Thickness, поэтому вы должны иметь возможность устанавливать его составные части следующим образом:

    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Margin"
                                   Storyboard.TargetName="Grid">
        <DiscreteObjectKeyFrame KeyTime="0" Value="0"/>
        <DiscreteObjectKeyFrame KeyTime="0:0:0.5">
           <DiscreteObjectKeyFrame.Value>
              <Thickness>3,7,5,9</Thickness>
           </DiscreteObjectKeyFrame.Value>
        </DiscreteObjectKeyFrame>
    </ObjectAnimationUsingKeyFrames>

Лучшей альтернативой может быть размещение элемента управления с помощью TranslateTransform таким образом, вы можете просто изменить компонент X или Y.Лично я считаю, что позиционирование элемента управления через его поле - это что-то вроде хака!

...