Click here to Skip to main content
15,891,033 members
Articles / Desktop Programming / WPF

Introducing PresentationWindows

Rate me:
Please Sign up or sign in to vote.
5.00/5 (3 votes)
4 Nov 2012CPOL6 min read 18K   564   19  
PresentationWindows is a WPF class library that introduces three new types derived from the Window class, enabling many previously difficult to access features of windows.
Imports System.Windows.Controls
Imports System.Windows
Imports System.Windows.Shapes
Imports System.Windows.Data
Imports System.Windows.Media

Public Module Templates
    Friend Function CreateNormalAeroWidowTemplate(titleBarContent As Boolean, magnify As Boolean)

        'basicFrameVisibilityBinding
        Dim basicFrameVisibilityBinding As New Binding()
        basicFrameVisibilityBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        basicFrameVisibilityBinding.Path = New PropertyPath(AeroWindow.BasicFrameVisibilityProperty)

        'activeBinding
        Dim activeBinding As New Binding()
        activeBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        activeBinding.Path = New PropertyPath(Window.IsActiveProperty)

        'backgroundBinding
        Dim backgroundBinding As Binding = New Binding()
        backgroundBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        backgroundBinding.Path = New PropertyPath(AeroWindow.BackgroundProperty)

        'contentBinding
        Dim contentBinding As Binding = New Binding()
        contentBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        contentBinding.Path = New PropertyPath(AeroWindow.ContentProperty)

        'iconBinding
        Dim iconBinding As New Binding()
        iconBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        iconBinding.Path = New PropertyPath(Window.IconProperty)

        'textBinding
        Dim textBinding = New Binding()
        textBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        textBinding.Path = New PropertyPath(Window.TitleProperty)

        'closeButtonVisibilityBinding
        Dim closeButtonVisibilityBinding As New Binding()
        closeButtonVisibilityBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        closeButtonVisibilityBinding.Path = New PropertyPath(AeroWindow.CloseButtonVisibilityProperty)

        'maximizeButtonVisibilityBinding
        Dim maximizeButtonVisibilityBinding As New Binding()
        maximizeButtonVisibilityBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        maximizeButtonVisibilityBinding.Path = New PropertyPath(AeroWindow.MaximizeButtonVisibilityProperty)

        'restoreButtonVisibilityBinding
        Dim restoreButtonVisibilityBinding As New Binding()
        restoreButtonVisibilityBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        restoreButtonVisibilityBinding.Path = New PropertyPath(AeroWindow.RestoreButtonVisibilityProperty)

        'minimizeButtonVisibilityBinding
        Dim minimizeButtonVisibilityBinding As New Binding()
        minimizeButtonVisibilityBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        minimizeButtonVisibilityBinding.Path = New PropertyPath(AeroWindow.MinimizeButtonVisibilityProperty)

        'titleBarContentBinding
        Dim titleBarContentBinding As New Binding()
        titleBarContentBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        titleBarContentBinding.Path = New PropertyPath(AeroWindow.TitleBarContentProperty)

        'whiteShadowEffect
        Dim whiteShadowEffect As New Effects.DropShadowEffect()
        whiteShadowEffect.ShadowDepth = 0
        whiteShadowEffect.Color = Colors.White

        'lightShadowEffect
        Dim lightShadowEffect As New Effects.DropShadowEffect()
        lightShadowEffect.ShadowDepth = 1
        lightShadowEffect.Opacity = 0.8

        'topFrameFactory
        Dim topFrameFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        topFrameFactory.SetValue(Grid.ColumnSpanProperty, 3)
        topFrameFactory.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.WindowFrameTop)
        topFrameFactory.SetBinding(VisualStyleWindowElement.VisibilityProperty, basicFrameVisibilityBinding)
        topFrameFactory.SetBinding(VisualStyleWindowElement.IsActiveProperty, activeBinding)

        'bottomFrameFactory
        Dim bottomFrameFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        bottomFrameFactory.SetValue(Grid.ColumnSpanProperty, 3)
        bottomFrameFactory.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.WindowFrameBottom)
        bottomFrameFactory.SetValue(Grid.RowProperty, 2)
        bottomFrameFactory.SetBinding(VisualStyleWindowElement.VisibilityProperty, basicFrameVisibilityBinding)
        bottomFrameFactory.SetBinding(VisualStyleWindowElement.IsActiveProperty, activeBinding)

        'leftFrameFactory
        Dim leftFrameFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        leftFrameFactory.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.WindowFrameLeft)
        leftFrameFactory.SetValue(Grid.RowProperty, 1)
        leftFrameFactory.SetValue(Grid.ColumnProperty, 0)
        leftFrameFactory.SetBinding(VisualStyleWindowElement.VisibilityProperty, basicFrameVisibilityBinding)
        leftFrameFactory.SetBinding(VisualStyleWindowElement.IsActiveProperty, activeBinding)

        'rightFrameFactory
        Dim rightFrameFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        rightFrameFactory.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.WindowFrameRight)
        rightFrameFactory.SetValue(Grid.RowProperty, 1)
        rightFrameFactory.SetValue(Grid.ColumnProperty, 2)
        rightFrameFactory.SetBinding(VisualStyleWindowElement.VisibilityProperty, basicFrameVisibilityBinding)
        rightFrameFactory.SetBinding(VisualStyleWindowElement.IsActiveProperty, activeBinding)

        'contentFactory
        Dim contentFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(ContentPresenter))
        contentFactory.SetValue(Grid.RowProperty, 2)
        contentFactory.SetValue(Grid.ColumnProperty, 1)
        contentFactory.SetBinding(ContentPresenter.ContentProperty, contentBinding)

        'captionButtonHoverTrigger
        Dim captionButtonHoverTrigger As New Trigger()
        captionButtonHoverTrigger.Property = Button.IsMouseOverProperty
        captionButtonHoverTrigger.Value = True
        captionButtonHoverTrigger.Setters.Add(New Setter(VisualStyleWindowElement.VisualStateProperty, ButtonVisualState.Hot, "VisualStylePiece"))

        'captionButtonPressTrigger
        Dim captionButtonPressTrigger As New Trigger()
        captionButtonPressTrigger.Property = Button.IsPressedProperty
        captionButtonPressTrigger.Value = True
        captionButtonPressTrigger.Setters.Add(New Setter(VisualStyleWindowElement.VisualStateProperty, ButtonVisualState.Pressed, "VisualStylePiece"))

        'captionButtonEnabledBinding
        Dim captionButtonEnabledBinding As New Binding()
        captionButtonEnabledBinding.RelativeSource = New RelativeSource(RelativeSourceMode.TemplatedParent)
        captionButtonEnabledBinding.Path = New PropertyPath(Button.IsEnabledProperty)

        'closeButtonTemplate
        Dim closeButtonTemplate As New ControlTemplate(GetType(Button))
        closeButtonTemplate.VisualTree = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        closeButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.CloseButton)
        closeButtonTemplate.VisualTree.Name = "VisualStylePiece"
        closeButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.MarginProperty, New Thickness(2))
        closeButtonTemplate.Triggers.Add(captionButtonHoverTrigger)
        closeButtonTemplate.Triggers.Add(captionButtonPressTrigger)
        closeButtonTemplate.VisualTree.SetBinding(VisualStyleWindowElement.IsActiveProperty, captionButtonEnabledBinding)

        'maximizeButtonTemplate
        Dim maximizeButtonTemplate As New ControlTemplate(GetType(Button))
        maximizeButtonTemplate.VisualTree = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        maximizeButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.MaximizeButton)
        maximizeButtonTemplate.VisualTree.Name = "VisualStylePiece"
        maximizeButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.MarginProperty, New Thickness(2))
        maximizeButtonTemplate.Triggers.Add(captionButtonHoverTrigger)
        maximizeButtonTemplate.Triggers.Add(captionButtonPressTrigger)
        maximizeButtonTemplate.VisualTree.SetBinding(VisualStyleWindowElement.IsActiveProperty, captionButtonEnabledBinding)

        'restoreButtonTemplate
        Dim restoreButtonTemplate As New ControlTemplate(GetType(Button))
        restoreButtonTemplate.VisualTree = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        restoreButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.RestoreButton)
        restoreButtonTemplate.VisualTree.Name = "VisualStylePiece"
        restoreButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.MarginProperty, New Thickness(2))
        restoreButtonTemplate.Triggers.Add(captionButtonHoverTrigger)
        restoreButtonTemplate.Triggers.Add(captionButtonPressTrigger)
        restoreButtonTemplate.VisualTree.SetBinding(VisualStyleWindowElement.IsActiveProperty, captionButtonEnabledBinding)

        'minimizeButtonTemplate
        Dim minimizeButtonTemplate As New ControlTemplate(GetType(Button))
        minimizeButtonTemplate.VisualTree = New FrameworkElementFactory(GetType(VisualStyleWindowElement))
        minimizeButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.ElementProperty, VisualStylePiece.MinimizeButton)
        minimizeButtonTemplate.VisualTree.Name = "VisualStylePiece"
        minimizeButtonTemplate.VisualTree.SetValue(VisualStyleWindowElement.MarginProperty, New Thickness(2))
        minimizeButtonTemplate.Triggers.Add(captionButtonHoverTrigger)
        minimizeButtonTemplate.Triggers.Add(captionButtonPressTrigger)
        minimizeButtonTemplate.VisualTree.SetBinding(VisualStyleWindowElement.IsActiveProperty, captionButtonEnabledBinding)

        'closeButtonFactory
        Dim closeButtonFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(Button))
        closeButtonFactory.SetResourceReference(Button.WidthProperty, SystemParameters.WindowCaptionButtonWidthKey)
        closeButtonFactory.SetResourceReference(Button.HeightProperty, SystemParameters.WindowCaptionButtonHeightKey)
        closeButtonFactory.SetValue(Button.MarginProperty, New Thickness(-1, -1, -1, 1))
        closeButtonFactory.SetValue(DockPanel.DockProperty, Dock.Right)
        closeButtonFactory.SetValue(Shell.WindowChrome.IsHitTestVisibleInChromeProperty, True)
        closeButtonFactory.SetValue(Button.CommandProperty, SystemCommands.CloseWindowCommand)
        closeButtonFactory.SetValue(Button.TemplateProperty, closeButtonTemplate)
        closeButtonFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Top)
        closeButtonFactory.SetBinding(Button.VisibilityProperty, closeButtonVisibilityBinding)

        'maximizeButtonFactory
        Dim maximizeButtonFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(Button))
        maximizeButtonFactory.SetResourceReference(Button.WidthProperty, SystemParameters.WindowCaptionButtonWidthKey)
        maximizeButtonFactory.SetResourceReference(Button.HeightProperty, SystemParameters.WindowCaptionButtonHeightKey)
        maximizeButtonFactory.SetValue(Button.MarginProperty, New Thickness(-1, -1, -1, 1))
        maximizeButtonFactory.SetValue(DockPanel.DockProperty, Dock.Right)
        maximizeButtonFactory.SetValue(Shell.WindowChrome.IsHitTestVisibleInChromeProperty, True)
        maximizeButtonFactory.SetValue(Button.CommandProperty, SystemCommands.MaximizeWindowCommand)
        maximizeButtonFactory.SetValue(Button.TemplateProperty, maximizeButtonTemplate)
        maximizeButtonFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Top)
        maximizeButtonFactory.SetBinding(Button.VisibilityProperty, maximizeButtonVisibilityBinding)

        'restoreButtonFactory
        Dim restoreButtonFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(Button))
        restoreButtonFactory.SetResourceReference(Button.WidthProperty, SystemParameters.WindowCaptionButtonWidthKey)
        restoreButtonFactory.SetResourceReference(Button.HeightProperty, SystemParameters.WindowCaptionButtonHeightKey)
        restoreButtonFactory.SetValue(Button.MarginProperty, New Thickness(-1, -1, -1, 1))
        restoreButtonFactory.SetValue(DockPanel.DockProperty, Dock.Right)
        restoreButtonFactory.SetValue(Shell.WindowChrome.IsHitTestVisibleInChromeProperty, True)
        restoreButtonFactory.SetValue(Button.CommandProperty, SystemCommands.RestoreWindowCommand)
        restoreButtonFactory.SetValue(Button.TemplateProperty, restoreButtonTemplate)
        restoreButtonFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Top)
        restoreButtonFactory.SetBinding(Button.VisibilityProperty, restoreButtonVisibilityBinding)

        'MinimizeButtonFactory
        Dim minimizeButtonFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(Button))
        minimizeButtonFactory.SetResourceReference(Button.WidthProperty, SystemParameters.WindowCaptionButtonWidthKey)
        minimizeButtonFactory.SetResourceReference(Button.HeightProperty, SystemParameters.WindowCaptionButtonHeightKey)
        minimizeButtonFactory.SetValue(Button.MarginProperty, New Thickness(-1, -1, -1, 1))
        minimizeButtonFactory.SetValue(DockPanel.DockProperty, Dock.Right)
        minimizeButtonFactory.SetValue(Shell.WindowChrome.IsHitTestVisibleInChromeProperty, True)
        minimizeButtonFactory.SetValue(Button.CommandProperty, SystemCommands.MinimizeWindowCommand)
        minimizeButtonFactory.SetValue(Button.TemplateProperty, minimizeButtonTemplate)
        minimizeButtonFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Top)
        minimizeButtonFactory.SetBinding(Button.VisibilityProperty, minimizeButtonVisibilityBinding)

        'titleTextFactory
        Dim titleTextFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(TextBlock))
        titleTextFactory.SetValue(Button.VerticalAlignmentProperty, VerticalAlignment.Center)
        titleTextFactory.SetBinding(TextBlock.TextProperty, textBinding)
        titleTextFactory.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Center)
        titleTextFactory.SetValue(TextBlock.EffectProperty, whiteShadowEffect)
        titleTextFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Top)

        'iconImageFactory
        Dim iconImageFactory As New FrameworkElementFactory(GetType(Image))
        iconImageFactory.SetValue(Image.WidthProperty, 16.0)
        iconImageFactory.SetValue(Image.HeightProperty, 16.0)
        iconImageFactory.SetBinding(Image.SourceProperty, iconBinding)

        'iconButtonTemplate
        Dim iconButtonTemplate As New ControlTemplate(GetType(Button))
        iconButtonTemplate.VisualTree = New FrameworkElementFactory(GetType(ContentPresenter))

        'iconButtonFactory
        Dim iconButtonFactory As New FrameworkElementFactory(GetType(Button))
        iconButtonFactory.SetValue(DockPanel.DockProperty, Dock.Left)
        iconButtonFactory.SetValue(Image.VerticalAlignmentProperty, VerticalAlignment.Center)
        iconButtonFactory.SetValue(Shell.WindowChrome.IsHitTestVisibleInChromeProperty, True)
        iconButtonFactory.SetValue(Image.WidthProperty, 16.0)
        iconButtonFactory.SetValue(Image.HeightProperty, 16.0)
        iconButtonFactory.SetValue(Button.ClickModeProperty, ClickMode.Press)
        iconButtonFactory.SetValue(Button.TemplateProperty, iconButtonTemplate)
        iconButtonFactory.SetValue(Button.CommandProperty, SystemCommands.ShowSystemMenuCommand)
        iconButtonFactory.SetValue(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Top)
        iconButtonFactory.AppendChild(iconImageFactory)

        'titleBarContentFactory
        Dim titleBarContentFactory As New FrameworkElementFactory(GetType(ContentControl))
        titleBarContentFactory.SetBinding(ContentControl.ContentProperty, titleBarContentBinding)
        titleBarContentFactory.SetValue(Shell.WindowChrome.IsHitTestVisibleInChromeProperty, True)
        titleBarContentFactory.SetValue(ContentControl.ClipToBoundsProperty, False)


        'titleBarDockPanelFactory
        Dim titleBarDockPanelFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(DockPanel))
        titleBarDockPanelFactory.SetValue(Grid.ColumnProperty, 1)
        titleBarDockPanelFactory.SetValue(Grid.RowProperty, 1)
        titleBarDockPanelFactory.SetValue(Grid.RowSpanProperty, 2)
        titleBarDockPanelFactory.SetValue(DockPanel.ClipToBoundsProperty, False)
        titleBarDockPanelFactory.SetValue(DockPanel.MarginProperty, New Thickness(1, 1, 1, 1))
        titleBarDockPanelFactory.AppendChild(closeButtonFactory)
        titleBarDockPanelFactory.AppendChild(maximizeButtonFactory)
        titleBarDockPanelFactory.AppendChild(restoreButtonFactory)
        titleBarDockPanelFactory.AppendChild(minimizeButtonFactory)
        If titleBarContent Then
            titleBarDockPanelFactory.AppendChild(titleBarContentFactory)
        Else
            titleBarDockPanelFactory.AppendChild(iconButtonFactory)
            titleBarDockPanelFactory.AppendChild(titleTextFactory)
        End If

        'contentGridFactory
        Dim contentGridFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(Grid))
        contentGridFactory.Name = "PART_ContentGrid"
        contentGridFactory.SetValue(Grid.ClipToBoundsProperty, False)
        contentGridFactory.SetValue(Grid.RowSpanProperty, 4)
        contentGridFactory.SetValue(Grid.ColumnSpanProperty, 3)
        contentGridFactory.SetValue(Grid.ClipToBoundsProperty, False)
        contentGridFactory.AppendChild(contentFactory)
        contentGridFactory.AppendChild(titleBarDockPanelFactory)

        'backgroundFactory
        Dim backgroundFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(Rectangle))
        backgroundFactory.SetValue(Grid.RowProperty, 1)
        backgroundFactory.SetValue(Grid.ColumnProperty, 1)
        backgroundFactory.SetBinding(Rectangle.FillProperty, backgroundBinding)

        'magnifierSurfaceFactory
        Dim magnifierSurfaceFactory = New FrameworkElementFactory(GetType(Rectangle))
        magnifierSurfaceFactory.Name = "PART_MagnifierSurface"

        'magnifierBorderFactory
        Dim magnifierBorderFactory As New FrameworkElementFactory(GetType(Border))
        magnifierBorderFactory.SetValue(Border.BackgroundProperty, Brushes.White)
        magnifierBorderFactory.SetValue(Border.ClipToBoundsProperty, True)
        magnifierBorderFactory.SetValue(Border.CornerRadiusProperty, New CornerRadius(6))
        magnifierBorderFactory.SetValue(Border.BorderBrushProperty, SystemParameters.WindowGlassBrush)
        magnifierBorderFactory.SetValue(Border.BorderThicknessProperty, New Thickness(3))
        magnifierBorderFactory.AppendChild(magnifierSurfaceFactory)

        'magnifierBorderBorderFactory
        Dim magnifierBorderBorderFactory As New FrameworkElementFactory(GetType(Border))
        magnifierBorderBorderFactory.SetValue(Border.BackgroundProperty, Brushes.Transparent)
        magnifierBorderBorderFactory.SetValue(Border.ClipToBoundsProperty, True)
        magnifierBorderBorderFactory.SetValue(Border.CornerRadiusProperty, New CornerRadius(8))
        magnifierBorderBorderFactory.SetValue(Border.BorderThicknessProperty, New Thickness(1))
        magnifierBorderBorderFactory.SetValue(Border.BorderBrushProperty, Brushes.Black)
        magnifierBorderBorderFactory.AppendChild(magnifierBorderFactory)


        'magnifierContainerFactory
        Dim magnifierContainerFactory = New FrameworkElementFactory(GetType(ContentControl))
        magnifierContainerFactory.Name = "PART_MagnifierContainer"
        magnifierContainerFactory.SetValue(ContentControl.BackgroundProperty, Brushes.White)
        'magnifierContainerFactory.SetValue(Control.EffectProperty, lightShadowEffect)
        magnifierContainerFactory.AppendChild(magnifierBorderBorderFactory)

        'chromeGridFactory
        Dim chromeGridFactory As FrameworkElementFactory = New FrameworkElementFactory(GetType(Grid))
        chromeGridFactory.SetBinding(Rectangle.FillProperty, backgroundBinding)
        chromeGridFactory.Name = "PART_ChromeGrid"
        chromeGridFactory.AppendChild(backgroundFactory)
        chromeGridFactory.AppendChild(leftFrameFactory)
        chromeGridFactory.AppendChild(topFrameFactory)
        chromeGridFactory.AppendChild(rightFrameFactory)
        chromeGridFactory.AppendChild(bottomFrameFactory)
        chromeGridFactory.AppendChild(contentGridFactory)
        If magnify Then
            chromeGridFactory.AppendChild(magnifierContainerFactory)
        End If

        'template
        Dim template As ControlTemplate = New ControlTemplate()
        template.VisualTree = chromeGridFactory

        Return template
    End Function

    Public ReadOnly Property AeroWindowNormalTemplate As ControlTemplate
        Get
            Return CreateNormalAeroWidowTemplate(False, False)
        End Get
    End Property

    Public ReadOnly Property AeroWindowTitleBarContentTemplate As ControlTemplate
        Get
            Return CreateNormalAeroWidowTemplate(True, False)
        End Get
    End Property

    Public ReadOnly Property MagnifyWindowNormalTemplate As ControlTemplate
        Get
            Return CreateNormalAeroWidowTemplate(False, True)
        End Get
    End Property

    Public ReadOnly Property MagnifyWindowTitleBarContentTemplate As ControlTemplate
        Get
            Return CreateNormalAeroWidowTemplate(True, True)
        End Get
    End Property
End Module

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions