Styling in WPF Chromeless Window
18 Nov 20184 minutes to read
This section describes the styles and templates supported by the ChromelessWindow control.
Custom template for the TitleBar
Chromeless Window allows you to write your own templates for the TitleBar. The TitleBar can be customized by using the TitleBarTemplate property. The following code snippet illustrates how to set the TitleBarTemplate property.
<syncfusion:ChromelessWindow x:Class="Chromelesswindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ChromelessWindow" Height="350" Width="525" TitleBarTemplate="{StaticResource TitleBarTemplateKey}"
syncfusion:SkinStorage.VisualStyle="Metro" x:Name="_chromelessWindow"
xmlns:syncfusion="clr-namespace:Syncfusion.Windows.Shared;assembly=Syncfusion.Shared.WPF" >
</syncfusion:ChromelessWindow>For example, use the following code for a TitleBarTemplate.
<ControlTemplate x:Key="TitleBarTemplateKey" TargetType="{x:Type syncfusion:TitleBar}">
<Border x:Name="MainGrid" Height="30" CornerRadius="5,5,0,0" Background="Bisque" >
<Border BorderBrush="Transparent" Background="Transparent" BorderThickness=".5" Width="Auto" CornerRadius="0,0,0,0">
<ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Center" />
</Border>
</Border>
</ControlTemplate>The drag-and-drop feature for the Chromeless Window is available only when a TitleBar is present. To enable this feature, include a TitleBar in your Chromeless Window and specify its name as
PART_TitleBar.

Custom template for the TitleButton
Chromeless Window enables you to write your own templates for the title buttons that are used in the TitleBar. The Maximize, Minimize, Restore, and Close buttons can be edited with the MaximizeButtonTemplate, MinimizeButtonTemplate, RestoreButtonTemplate, and CloseButtonTemplate properties, respectively. The following example changes the template of the Maximize button using the MaximizeButtonTemplate property.
<syncfusion:ChromelessWindow x:Class="Chromelesswindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ChromelessWindow" Height="350" Width="525" MaximizeButtonTemplate="{StaticResource MaxTemplateKey}"
syncfusion:SkinStorage.VisualStyle="Metro" x:Name="_chromelessWindow"
xmlns:syncfusion="clr-namespace:Syncfusion.Windows.Shared;assembly=Syncfusion.Shared.WPF" >
<Grid>
</Grid>
</syncfusion:ChromelessWindow>For example, use the following code for a MaximizeButtonTemplate.
<ControlTemplate x:Key="MaxTemplateKey" TargetType="{x:Type syncfusion:TitleButton}">
<Border SnapsToDevicePixels="true" x:Name="maxborder" Width="15" Height="15" Background="Coral"
BorderThickness="0" BorderBrush="Transparent">
<Grid SnapsToDevicePixels="true" x:Name="grid" HorizontalAlignment="Center" VerticalAlignment="Center" Width="9" Height="8">
<Path Name="pathButton" SnapsToDevicePixels="True" Stretch="Fill" StrokeThickness="1"
Data="M1,1 L8,1 L8,8 L1,8 z M1,2 L8,2" Stroke="Green"
HorizontalAlignment="Center" VerticalAlignment="Center" Width="9" Height="8">
</Path>
</Grid>
</Border>
</ControlTemplate>
Similarly, the template for any other button can be changed by using the corresponding button property.
Overriding the default style
Chromeless Window can be customized by editing the default template. The default style can be downloaded from the following link:
https://www.syncfusion.com/downloads/support/directtrac/general/ze/DefaultStyle-1700710349
This default style needs to be included in the App.xaml file of your application, and you can override this style as you desire.
All the templates should be written in
App.xaml. To register the default style, merge the downloadedResourceDictionaryinApp.xamlas shown below.
The below example is illustrated to override the Chromeless Window’s full style
<ControlTemplate x:Key="TitleBarTemplateKey" TargetType="{x:Type syncfusion:TitleBar}">
<Border Name="border" Background="#AA161616" Height="30">
<ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0,0,0,0"/>
</Border>
</ControlTemplate>
<ControlTemplate x:Key="ChromelessWindowTemplate" TargetType="{x:Type syncfusion:ChromelessWindow}">
<AdornerDecorator>
<Border Name="OuterBorder" Background="#F1401013" BorderThickness="2" CornerRadius="{Binding ElementName=CornerRadiusSlider,Path=Value}" BorderBrush="#401013">
......
......
......
<syncfusion:TitleBar Name="PART_TitleBar" Grid.Row="0" Template="{StaticResource TitleBarTemplateKey}" >
<Grid VerticalAlignment="Top" Height="30">
<StackPanel Orientation="Horizontal">
<Image x:Name="PART_Icon" Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type syncfusion:ChromelessWindow}}, Path=Icon}" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="4,4,2,4" MaxWidth="16" MaxHeight="16" MinWidth="16" MinHeight="16" />
<ContentControl Foreground="White" Content="{TemplateBinding Title}" VerticalAlignment="Center" HorizontalAlignment="Left" x:Name="TitlePresenter" Margin="5,5,5,5" />
</StackPanel>
......
......
</Grid>
</syncfusion:TitleBar>
......
......
</Grid>
</Border>
</AdornerDecorator>
</ControlTemplate>Then apply this style to the Chromeless Window using the Template property.
<syncfusion:ChromelessWindow x:Class="Chromelesswindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ChromelessWindow" Height="350" Width="525" Template="{StaticResource ChromelessWindowTemplate}"
syncfusion:SkinStorage.VisualStyle="Metro" x:Name="_chromelessWindow"
xmlns:syncfusion="clr-namespace:Syncfusion.Windows.Shared;assembly=Syncfusion.Shared.WPF" >
</syncfusion:ChromelessWindow>The following screenshot shows the custom ChromelessWindow control created using the preceding code.
