代码之家  ›  专栏  ›  技术社区  ›  David Veeneman

wpf:用xaml而不是c制作动画?

  •  0
  • David Veeneman  · 技术社区  · 15 年前

    。我正在创建一个用户控件,该控件垂直堆叠三个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 回复  |  直到 13 年前
        1
  •  1
  •   nportelli    15 年前

    您应该能够使用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/

        2
  •  1
  •   Aviad P.    15 年前

    一个想法是创建一个新的面板类型,从 Panel (或者 StackPanel )例如 IntegralClippingPanel . 在该面板的覆盖中 MeasureOverride ArrangeOverride 如果子元素完全适合可用空间,请确保仅显示它们。

    推荐文章