Beispiel #1
0
        /// <summary>
        /// Builds the visual tree for the <see cref="FloatingWindow" /> control
        /// when a new template is applied.
        /// </summary>
        public override void OnApplyTemplate()
        {
            UnsubscribeFromTemplatePartEvents();
            UnsubscribeFromStoryBoardEvents();

            base.OnApplyTemplate();

            root = GetTemplateChild(PART_Root) as FrameworkElement;
            contentRoot = GetTemplateChild(PART_ContentRoot) as FrameworkElement;
            contentBorder = GetTemplateChild(PART_ContentBorder) as Border;
            chrome = GetTemplateChild(PART_Chrome) as FrameworkElement;
            titleContent = GetTemplateChild(PART_TitleContent) as ContentControl;
            contentPresenter = GetTemplateChild(PART_ContentPresenter) as FrameworkElement;
            closeButton = GetTemplateChild(PART_CloseButton) as ButtonBase;
            maximizeButton = GetTemplateChild(PART_MaximizeButton) as ButtonBase;
            minimizeButton = GetTemplateChild(PART_MinimizeButton) as ButtonBase;
            restoreButton = GetTemplateChild(PART_RestoreButton) as ButtonBase;

            if (root == null)
                throw new NotImplementedException("Template Part PART_Root is required to display FloatingWindow.");

            if (contentRoot == null)
                throw new NotImplementedException("Template Part PART_ContentRoot is required to display FloatingWindow.");

            if (contentPresenter == null)
                throw new NotImplementedException("Template Part PART_ContentPresenter is required to display FloatingWindow.");

            SetStyles();
            GetStoryboards();
            SetInitialRootPosition();
            InitializeContentRootTransformGroup();

            if (closeButton != null)
                closeButton.SetVisible(ShowCloseButton);

            if (minimizeButton != null)
                minimizeButton.SetVisible(ShowMinimizeButton);

            if (maximizeButton != null)
                maximizeButton.SetVisible(ShowMaximizeButton);

            SubscribeToTemplatePartEvents();
            SubscribeToStoryBoardEvents();
        }