создание представления в пользовательском элементе управления, чтобы скрыть детали - PullRequest
0 голосов
/ 24 февраля 2011

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

Проблема в том, что я не знаю, как скрытьНарисуйте только части этого прямоугольника, когда я выйду.Например, когда этот прямоугольник находится на полпути, отображается только верхняя половина, а остальная часть скрыта.Как я могу сделать это без необходимости писать сложный код?Предположительно, мне просто нужно иметь возможность определить своего рода «вид», в котором на экран выводятся только вещи внутри этого вида.

Мысли?Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Вы можете использовать VisualStateManager, чтобы определить возможные визуальные состояния для вашего представления.Кроме того, вы можете определить переходы между этими состояниями (включая анимацию).В обработчике события Click вашей кнопки вы должны указать VisualStateManager перейти в другое состояние - и все готово.

http://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager.gotostate%28v=vs.95%29.aspx

Это, вероятно, будет выглядеть таккод вида позади:

void OnClick(object sender, RoutedEventArgs e)
{
    VisualStateManager.GoToState(this, "StateName", true);
}

Чтобы легко определить анимацию, вы можете использовать Expression Blend 4

0 голосов
/ 25 февраля 2011

Чтобы обеспечить отображение только тех частей анимационного прямоугольника, которые находятся внутри родительского контейнера, и ничего вне этого, вам необходимо иметь возможность обрезать дочерние родительские элементы до его границ. К сожалению, в Silverlight нет свойства ClipToBounds, но вы можете использовать обрезанное прикрепленное поведение Колина Эберхардта для достижения того же эффекта.

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