WPF: Анимация в XAML, а не в C #? - PullRequest
0 голосов
/ 23 января 2010

. Я создаю пользовательский элемент управления, который укладывает три календаря месяца WPF (Master, Slave1 и Slave2) по вертикали. Я хочу, чтобы второй и третий календари были скрыты до тех пор, пока окно хоста не станет достаточно большим, чтобы показывать весь месяц - без частичных календарей. Я реализовал функцию захвата события SizeChanged в обработчике события в коде:

/// <summary>
/// Shows only complete calendars--partially visible calendars are hidden.
/// </summary>
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
    // Increasing window height
    var newHeight = e.NewSize.Height;
    if (newHeight > 500)
    {
        SlaveCalendar1.Visibility = Visibility.Visible;
        SlaveCalendar2.Visibility = Visibility.Visible;
    }
    else if (newHeight > 332)
    {
        SlaveCalendar1.Visibility = Visibility.Visible;
        SlaveCalendar2.Visibility = Visibility.Hidden;
    }
    else
    {
        SlaveCalendar1.Visibility = Visibility.Hidden;
        SlaveCalendar2.Visibility = Visibility.Hidden;
    }
}

Работает нормально, но я бы предпочел реализовать эту функцию в XAML, и я не уверен, как это сделать. Какие-либо предложения? Я не ищу кого-то еще, чтобы написать это для меня - просто укажи мне правильное направление. Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 23 января 2010

Одной из идей является создание нового типа панели, полученного из Panel (или, может быть, StackPanel), который называется, например, IntegralClippingPanel. В переопределениях этой панели MeasureOverride и ArrangeOverride убедитесь, что дочерние элементы отображаются только в том случае, если они полностью вписываются в доступное пространство.

1 голос
/ 23 января 2010

Вы должны сделать это с помощью шаблонов и триггеров xaml. Вероятно, событие срабатывает для события OnSizeChanged. Я верю

Вот некоторые ресурсы, которые помогут вам указать правильное направление.

http://msdn.microsoft.com/en-us/library/cc294856%28Expression.30%29.aspx http://www.wpfdude.com/articles/Triggers.aspx http://www.geektieguy.com/2008/01/05/wpf-controltemplate-trigger-tip/

...