Si quieres ponerte súper duro haciendo ventanitas personalizadas

Con el WindowChrome vas a tener canela fina, pero pasarás un mal rato con sus particularidades y transparencias cacharreras. No olvides descargar el ensamblado Microsoft.Windows.Shell de aquí: http://archive.msdn.microsoft.com/WPFShell/Release/ProjectReleases.aspx?ReleaseId=4332

Aquí pongo una tandilla de estilos que harán las delicias de todos aquellos que quieran estilizar sus ventanas. Recomendable echarle un ojo a la más básica: DialogWindowStyle:

Generic.xaml

<ResourceDictionary

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    xmlns:Shell="clr-namespace:Microsoft.Windows.Shell;assembly=Microsoft.Windows.Shell"

    xmlns:Themes="clr-namespace:Filtro.Themes" mc:Ignorable="d">

 

    <SolidColorBrush x:Key="DialogBorderBrush" 

                         Color="DarkGray"/>

    <SolidColorBrush x:Key="DialogBackgroundBrush" 

                         Color="#FFEBEBEB"/>

    <SolidColorBrush x:Key="TitleTextBrush" 

            Color="White"/>

 

    <Style TargetType="{x:Type Themes:MaximizeButton}">

        <Setter Property="IsChecked" Value="True"/>

        <Setter Property="Width" Value="13"/>

        <Setter Property="Height" Value="13" />

        <Setter Property="Cursor" Value="Hand"/>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type Themes:MaximizeButton}">

                    <Grid Margin="1" MinWidth="11.212" MinHeight="10.116" Width="11.212" Height="10.116" >

                        <VisualStateManager.VisualStateGroups>

                            <VisualStateGroup x:Name="CommonStates">

                                <VisualState x:Name="Normal"/>

                                <VisualState x:Name="Pressed">

                                    <Storyboard>

                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Opacity)" Storyboard.TargetName="border">

                                            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>

                                        </DoubleAnimationUsingKeyFrames>

                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Opacity)" Storyboard.TargetName="grid">

                                            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>

                                        </DoubleAnimationUsingKeyFrames>

                                    </Storyboard>

                                </VisualState>

                                <VisualState x:Name="MouseOver"/>

                                <VisualState x:Name="Disabled"/>

                            </VisualStateGroup>

                            <VisualStateGroup x:Name="CheckStates">

                                <VisualState x:Name="Checked">

                                    <Storyboard>

                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="grid">

                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/>

                                        </ObjectAnimationUsingKeyFrames>

                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="border">

                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/>

                                        </ObjectAnimationUsingKeyFrames>

                                    </Storyboard>

                                </VisualState>

                                <VisualState x:Name="Unchecked">

                                    <Storyboard>

                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="grid">

                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/>

                                        </ObjectAnimationUsingKeyFrames>

                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="border">

                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}"/>

                                        </ObjectAnimationUsingKeyFrames>

                                    </Storyboard>

                                </VisualState>

                                <VisualState x:Name="Indeterminate"/>

                            </VisualStateGroup>

                        </VisualStateManager.VisualStateGroups>

                        <Border x:Name="hitTest" BorderThickness="1" Background="Black" Opacity="0" IsHitTestVisible="True"/>

                        <Border x:Name="border" BorderBrush="White" BorderThickness="1.2,3,1.2,1.2" Margin="1" Visibility="Visible" SnapsToDevicePixels="True" d:IsHidden="True"  >

                            <Border.Effect>

                                <DropShadowEffect Color="White" ShadowDepth="0" BlurRadius="1.5" Opacity="0"/>

                            </Border.Effect>

                        </Border>

                        <Grid x:Name="grid" Margin="1,0,1,1" Visibility="Collapsed" >

                            <Grid.Effect>

                                <DropShadowEffect Color="White" ShadowDepth="0" BlurRadius="1.5" Opacity="0"/>

                            </Grid.Effect>

                            <Border x:Name="borderChecked02" BorderBrush="White" BorderThickness="0.8" Height="6" Width="6" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,0.5,0.5,0" SnapsToDevicePixels="True"/>

                            <Border x:Name="borderChecked01" BorderBrush="White" BorderThickness="1.2" Height="7" Width="7" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="0" SnapsToDevicePixels="True"/>

                        </Grid>

                    </Grid>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>

 

    <Style TargetType="{x:Type Themes:TitleCloseButton}">

        <Setter Property="Width" Value="13"/>

        <Setter Property="Height" Value="13" />

        <Setter Property="Cursor" Value="Hand"/>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type Themes:TitleCloseButton}">

                    <Grid Margin="1" MinWidth="11.212" MinHeight="10.116" Width="11.212" Height="10.116" >

 

 

                        <VisualStateManager.VisualStateGroups>

                            <VisualStateGroup x:Name="CommonStates">

                                <VisualState x:Name="Normal"/>

                                <VisualState x:Name="MouseOver"/>

                                <VisualState x:Name="Pressed">

                                    <Storyboard>

                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Opacity)" Storyboard.TargetName="grid">

                                            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>

                                        </DoubleAnimationUsingKeyFrames>

                                    </Storyboard>

                                </VisualState>

                                <VisualState x:Name="Disabled"/>

                            </VisualStateGroup>

                        </VisualStateManager.VisualStateGroups>

 

 

                        <Border x:Name="hitTest" BorderThickness="1" Background="Black" Opacity="0" IsHitTestVisible="True"/>

                        <Grid x:Name="grid" Margin="0.57,0.574,0.566,0.567">

                            <Grid.Effect>

                                <DropShadowEffect BlurRadius="1.5" Opacity="0" Color="White" ShadowDepth="0"/>

                            </Grid.Effect>

                            <Path Data="M0.57104657,0.57617608 L9.6454003,8.5511275" Margin="0" Stretch="Fill" Stroke="White" StrokeThickness="2"/>

                            <Path Data="M0.59282188,8.5238779 L9.5987266,0.60561431" Margin="0.023,0.031,0.047,0.025" Stretch="Fill" Stroke="White" StrokeThickness="2"/>

                        </Grid>

                    </Grid>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>  

    

    <Style TargetType="{x:Type Themes:TitleMinimizeButton}">

        <Setter Property="Width" Value="13"/>

        <Setter Property="Height" Value="13" />

        <Setter Property="Cursor" Value="Hand"/>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type Themes:TitleMinimizeButton}">

                    <Grid Margin="1" MinWidth="11.212" MinHeight="10.116" Width="11.212" Height="10.116" >

 

 

                        <VisualStateManager.VisualStateGroups>

                            <VisualStateGroup x:Name="CommonStates">

                                <VisualState x:Name="Normal"/>

                                <VisualState x:Name="MouseOver"/>

                                <VisualState x:Name="Pressed">

                                    <Storyboard>

                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Opacity)" Storyboard.TargetName="border">

                                            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>

                                        </DoubleAnimationUsingKeyFrames>

                                    </Storyboard>

                                </VisualState>

                                <VisualState x:Name="Disabled"/>

                            </VisualStateGroup>

                        </VisualStateManager.VisualStateGroups>

 

 

                        <Border x:Name="hitTest" BorderThickness="1" Background="Black" Opacity="0" IsHitTestVisible="True"/>

                        <Border x:Name="border" BorderBrush="White" BorderThickness="0,0,0,2" Margin="1" SnapsToDevicePixels="True"   >

                            <Border.Effect>

                                <DropShadowEffect Color="White" ShadowDepth="0" BlurRadius="1.5" Opacity="0"/>

                            </Border.Effect>

                        </Border>

                    </Grid>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>

 

    <SolidColorBrush x:Key="BorderWhiteBrush" Color="White"/>

    <SolidColorBrush x:Key="FillGgBlueBrush" Color="#FF389FD1"/>

 

    <Style x:Key="BlueWindowStyle" TargetType="Window">

        <Setter Property="Shell:WindowChrome.WindowChrome">

            <Setter.Value>

                <Shell:WindowChrome ResizeBorderThickness="6" CaptionHeight="10" CornerRadius="0" GlassFrameThickness="0"/>

            </Setter.Value>

        </Setter>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="Window">

                    <Grid>

                        <Border x:Name="mainBorder" BorderThickness="1" BorderBrush="{StaticResource BorderWhiteBrush}" Background="{StaticResource FillGgBlueBrush}">

                            <StackPanel Orientation="Horizontal">

                                <ContentPresenter  Margin="{Binding WindowNonClientFrameThickness, Source={x:Static Shell:SystemParameters2.Current}}"  Content="{TemplateBinding Content}"/>

                            </StackPanel>

                        </Border>

                        <StackPanel x:Name="mainStackPanel" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" >

                            <Themes:TitleMinimizeButton Height="20" Width="20" Margin="0" Shell:WindowChrome.IsHitTestVisibleInChrome="True" />

                            <Themes:MaximizeButton IsChecked="False" Height="20" Width="20" Margin="0" Shell:WindowChrome.IsHitTestVisibleInChrome="True" />

                            <Themes:TitleCloseButton Height="20" Width="20" Margin="0" Shell:WindowChrome.IsHitTestVisibleInChrome="True"/>

                        </StackPanel>

                        <StackPanel Margin="5,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal">

                            <Image Source="{TemplateBinding Icon}" Width="16" Margin="0,0,5,0" />

                            <TextBlock x:Name="tBlock" Text="{TemplateBinding Title}" Foreground="White" FontWeight="Bold"  />

                            <StackPanel.Effect>

                                <DropShadowEffect Color="Black" ShadowDepth="0" BlurRadius="5" Opacity="0.5" />

                            </StackPanel.Effect>

                        </StackPanel>

                    </Grid>

                    <ControlTemplate.Triggers>

                        <Trigger Property="WindowState" Value="Maximized">

                            <Setter Property="Margin" TargetName="mainStackPanel" Value="0,5,10,0"/>

                            <Setter Property="Margin" TargetName="tBlock" Value="10,10,0,0"/>

                        </Trigger>

                    </ControlTemplate.Triggers>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>

 

    <Style x:Key="DialogWindowStyle" TargetType="Window">

        <Setter Property="AllowsTransparency" Value="True" />

        <Setter Property="WindowStyle" Value="None" />

        <Setter Property="Shell:WindowChrome.WindowChrome">

            <Setter.Value>

                <Shell:WindowChrome ResizeBorderThickness="6" CaptionHeight="20" CornerRadius="10" GlassFrameThickness="0"/>

            </Setter.Value>

        </Setter>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="Window">

                    <DockPanel Opacity="1">

                        <Border x:Name="mainBorder" DockPanel.Dock="Top" CornerRadius="5,5,0,0">

                            <Border.Background>

                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

                                    <GradientStop Color="#FF7C7C7C" Offset="0"/>

                                    <GradientStop Color="#FF4F4F4F" Offset="1"/>

                                </LinearGradientBrush>

                            </Border.Background>

                            <Grid x:Name="titleBarGrid">

                                <TextBlock VerticalAlignment="Center" Margin="0,4,0,4" FontSize="12"

                                                   FontWeight="Bold" Foreground="{StaticResource TitleTextBrush}" TextAlignment="Center"

                                                   Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}" />

                                <Themes:TitleCloseButton HorizontalAlignment="Right" Height="16" Width="16" Margin="0,0,5,0" Shell:WindowChrome.IsHitTestVisibleInChrome="True"/>

                            </Grid>

 

                        </Border>

                        <Border Background="{DynamicResource DialogBackgroundBrush}" BorderBrush="{DynamicResource DialogBorderBrush}" BorderThickness="1,0,1,1" >

                            <ContentPresenter Content="{TemplateBinding Content}" Margin="15" />

                        </Border>

                    </DockPanel>

                    <ControlTemplate.Triggers>

                        <Trigger Property="WindowState" Value="Maximized">

                            <Setter Property="Margin" TargetName="titleBarGrid" Value="0,5,10,0"/>

                        </Trigger>

                    </ControlTemplate.Triggers>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>

 

    <Style x:Key="GlossyButton" TargetType="Button">

        <Setter Property="Background" Value="#FF1F3B53"/>

        <Setter Property="Foreground" Value="#FF000000"/>

        <Setter Property="Padding" Value="3"/>

        <Setter Property="BorderThickness" Value="1"/>

        <Setter Property="BorderBrush">

            <Setter.Value>

                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

                    <GradientStop Color="#FFA3AEB9" Offset="0"/>

                    <GradientStop Color="#FF8399A9" Offset="0.375"/>

                    <GradientStop Color="#FF718597" Offset="0.375"/>

                    <GradientStop Color="#FF617584" Offset="1"/>

                </LinearGradientBrush>

            </Setter.Value>

        </Setter>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="Button">

                    <Grid>

                        <VisualStateManager.VisualStateGroups>

                            <VisualStateGroup x:Name="CommonStates">

                                <VisualState x:Name="Normal"/>

                                <VisualState x:Name="MouseOver">

                                    <Storyboard>

                                        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="glow" Storyboard.TargetProperty="(UIElement.Opacity)">

                                            <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>

                                        </DoubleAnimationUsingKeyFrames>

                                    </Storyboard>

                                </VisualState>

                                <VisualState x:Name="Pressed">

 

                                    <Storyboard>

                                        <DoubleAnimationUsingKeyFrames Storyboard.TargetName="shine" Storyboard.TargetProperty="Opacity">

                                            <SplineDoubleKeyFrame KeyTime="0" Value="0.4"/>

                                        </DoubleAnimationUsingKeyFrames>

                                        <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="glow" 

                                                Storyboard.TargetProperty="(UIElement.Visibility)">

                                            <DiscreteObjectKeyFrame KeyTime="00:00:00">

                                                <DiscreteObjectKeyFrame.Value>

                                                    <Visibility>Collapsed</Visibility>

                                                </DiscreteObjectKeyFrame.Value>

                                            </DiscreteObjectKeyFrame>

                                        </ObjectAnimationUsingKeyFrames>

                                    </Storyboard>

                                </VisualState>

                                <VisualState x:Name="Disabled">

                                    <!-- <Storyboard>

                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="Opacity">

                                                <SplineDoubleKeyFrame KeyTime="0" Value=".55"/>

                                            </DoubleAnimationUsingKeyFrames>

                                        </Storyboard> -->

                                </VisualState>

                            </VisualStateGroup>

                            <VisualStateGroup x:Name="FocusStates">

                                <VisualState x:Name="Focused">

                                    <!--<Storyboard>

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="glow" Storyboard.TargetProperty="(UIElement.Opacity)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>

                                            </DoubleAnimationUsingKeyFrames>

                                        </Storyboard>-->

                                </VisualState>

                                <VisualState x:Name="Unfocused"/>

                            </VisualStateGroup>

                        </VisualStateManager.VisualStateGroups>

                        <Border BorderBrush="#FFFFFFFF" BorderThickness="1,1,1,1" CornerRadius="4,4,4,4">

                            <Border x:Name="border" Background="{x:Null}" BorderBrush="#FF000000" BorderThickness="1,1,1,1" CornerRadius="4,4,4,4">

                                <Grid>

                                    <Grid.RowDefinitions>

                                        <RowDefinition Height="0.507*"/>

                                        <RowDefinition Height="0.493*"/>

                                    </Grid.RowDefinitions>

                                    <Border Opacity="0" HorizontalAlignment="Stretch" x:Name="glow" Width="Auto" Grid.RowSpan="2" CornerRadius="4,4,4,4">

                                        <Border.Background>

                                            <RadialGradientBrush>

                                                <RadialGradientBrush.RelativeTransform>

                                                    <TransformGroup>

                                                        <ScaleTransform ScaleX="1.702" ScaleY="2.243"/>

                                                        <SkewTransform AngleX="0" AngleY="0"/>

                                                        <RotateTransform Angle="0"/>

                                                        <TranslateTransform X="-0.368" Y="-0.152"/>

                                                    </TransformGroup>

                                                </RadialGradientBrush.RelativeTransform>

                                                <GradientStop Color="#B28DBDFF" Offset="0"/>

                                                <GradientStop Color="#008DBDFF" Offset="1"/>

                                            </RadialGradientBrush>

                                        </Border.Background>

                                    </Border>

                                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Grid.RowSpan="2"/>

                                    <Border HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="shine" Width="Auto" CornerRadius="4,4,0,0">

                                        <Border.Background>

                                            <LinearGradientBrush EndPoint="0.494,0.889" StartPoint="0.494,0.028">

                                                <GradientStop Color="#99FFFFFF" Offset="0"/>

                                                <GradientStop Color="#33FFFFFF" Offset="1"/>

                                            </LinearGradientBrush>

                                        </Border.Background>

                                    </Border>

                                </Grid>

                            </Border>

                        </Border>

 

                    </Grid>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>

 

    <Style x:Key="GlossyDialogWindowStyle" TargetType="{x:Type Window}">

        <Setter Property="AllowsTransparency" Value="True" />

        <Setter Property="WindowStyle" Value="None" />

        <Setter Property="Shell:WindowChrome.WindowChrome">

            <Setter.Value>

                <Shell:WindowChrome ResizeBorderThickness="6" CaptionHeight="20" CornerRadius="10" GlassFrameThickness="0"/>

            </Setter.Value>

        </Setter>

        <Setter Property="Template">

            <Setter.Value>

                <ControlTemplate TargetType="{x:Type Window}">

                    <DockPanel Opacity="1">

                        <Border x:Name="mainBorder" DockPanel.Dock="Top" CornerRadius="5,5,0,0">

                            <Grid x:Name="titleBarContainer" Background="#FF5A5A5A">

                                <Grid Margin="0">

                                    <Grid.RowDefinitions>

                                        <RowDefinition Height="0.507*"/>

                                        <RowDefinition Height="0.493*"/>

                                    </Grid.RowDefinitions>

                                    <Border Opacity="0" HorizontalAlignment="Stretch" x:Name="glow" Width="Auto" Grid.RowSpan="2" CornerRadius="4,4,4,4">

                                        <Border.Background>

                                            <RadialGradientBrush>

                                                <RadialGradientBrush.RelativeTransform>

                                                    <TransformGroup>

                                                        <ScaleTransform ScaleX="1.702" ScaleY="2.243"/>

                                                        <SkewTransform AngleX="0" AngleY="0"/>

                                                        <RotateTransform Angle="0"/>

                                                        <TranslateTransform X="-0.368" Y="-0.152"/>

                                                    </TransformGroup>

                                                </RadialGradientBrush.RelativeTransform>

                                                <GradientStop Color="#B28DBDFF" Offset="0"/>

                                                <GradientStop Color="#008DBDFF" Offset="1"/>

                                            </RadialGradientBrush>

                                        </Border.Background>

                                    </Border>

                                    <Border HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="shine" Width="Auto" CornerRadius="4,4,0,0">

                                        <Border.Background>

                                            <LinearGradientBrush EndPoint="0.494,0.889" StartPoint="0.494,0.028">

                                                <GradientStop Color="#99FFFFFF" Offset="0"/>

                                                <GradientStop Color="#33FFFFFF" Offset="1"/>

                                            </LinearGradientBrush>

                                        </Border.Background>

                                    </Border>

                                </Grid>

                                <Grid x:Name="titleBarGrid" Margin="0,4,0,4">

                                    <TextBlock VerticalAlignment="Center"  FontSize="12"

                                            FontWeight="Bold" Foreground="{StaticResource TitleTextBrush}" TextAlignment="Center"

                                            Text="{Binding Title, RelativeSource={RelativeSource TemplatedParent}}" />

                                    <Themes:TitleCloseButton HorizontalAlignment="Right" Height="16" Width="16" Margin="0,0,5,0" Shell:WindowChrome.IsHitTestVisibleInChrome="True"/>

                                </Grid>

                            </Grid>

 

                        </Border>

                        <Border Background="{TemplateBinding Background}" BorderBrush="{DynamicResource DialogBorderBrush}" BorderThickness="1,0,1,1" >

                            <ContentPresenter Content="{TemplateBinding Content}" Margin="15" />

                        </Border>

                    </DockPanel>

                    <ControlTemplate.Triggers>

                        <Trigger Property="WindowState" Value="Maximized">

                            <Setter Property="Margin" TargetName="titleBarGrid" Value="0,10,10,3"/>

                        </Trigger>

                    </ControlTemplate.Triggers>

                </ControlTemplate>

            </Setter.Value>

        </Setter>

    </Style>

 

</ResourceDictionary>

MaximizeButton.cs

using System.Windows;

using System.Windows.Controls;

 

namespace Filtro.Themes

{

    public class MaximizeButton : CheckBox

    {

        static MaximizeButton()

        {

            DefaultStyleKeyProperty.OverrideMetadata(typeof(MaximizeButton), new FrameworkPropertyMetadata(typeof(MaximizeButton)));

        }

 

        private Window ParentWindow

        {

            get { return Window.GetWindow(this); }

        }

 

        public MaximizeButton()

        {

            Checked += (sObj, eArgs) =>

                           {

                               if (ParentWindow != null) ParentWindow.WindowState = WindowState.Maximized;

                           };

            Unchecked += (sObj, eArgs) =>

                             {

                                 if (ParentWindow != null) ParentWindow.WindowState = WindowState.Normal;

                             };

        }

    }

}

TitleCloseButton.cs

using System.Windows;

using System.Windows.Controls;

 

namespace Filtro.Themes

{

    public class TitleCloseButton : Button

    {

        static TitleCloseButton()

        {

            DefaultStyleKeyProperty.OverrideMetadata(typeof(TitleCloseButton), new FrameworkPropertyMetadata(typeof(TitleCloseButton)));

        }

 

        private Window ParentWindow

        {

            get { return Window.GetWindow(this); }

        }

 

        public TitleCloseButton()

        {

            Click += (sObj, eArgs) => { if (ParentWindow != null) ParentWindow.Close(); };

        }

 

    }

}

TitleMinimizeButton.cs

using System.Windows;

using System.Windows.Controls;

 

namespace Filtro.Themes

{

    public class TitleMinimizeButton : Button

    {

        static TitleMinimizeButton()

        {

            DefaultStyleKeyProperty.OverrideMetadata(typeof(TitleMinimizeButton), new FrameworkPropertyMetadata(typeof(TitleMinimizeButton)));

        }

 

        private Window ParentWindow

        {

            get { return Window.GetWindow(this); }

        }

 

        public TitleMinimizeButton()

        {

            Click += (sObj, eArgs) =>

                         {

                             if (ParentWindow != null) ParentWindow.WindowState = WindowState.Minimized;

                         };

        }

    }

}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s