Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
This article show you how to apply styling to a Windows Presentation Foundation (WPF) control hosted on a Windows Form.
You need Visual Studio to complete this walkthrough.
Open Visual Studio and create a new Windows Forms Application project in Visual Basic or Visual C# named StylingWpfContent
.
Note
When hosting WPF content, only C# and Visual Basic projects are supported.
After you add a WPF control type to the project, you can host it in an ElementHost control.
Add a new WPF UserControl project to the solution. Use the default name for the control type, UserControl1.xaml
. For more information, see Walkthrough: Creating New WPF Content on Windows Forms at Design Time.
In Design view, make sure that UserControl1
is selected.
In the Properties window, set the value of the Width and Height properties to 200.
Add a System.Windows.Controls.Button control to the UserControl and set the value of the Content property to Cancel.
Add a second System.Windows.Controls.Button control to the UserControl and set the value of the Content property to OK.
Build the project.
You can apply different styling to a WPF control to change its appearance and behavior.
Open Form1
in the Windows Forms Designer.
In the Toolbox, double-click UserControl1
to create an instance of UserControl1
on the form.
An instance of UserControl1
is hosted in a new ElementHost control named elementHost1
.
In the smart tag panel for elementHost1
, click Edit Hosted Content from the drop-down list.
UserControl1
opens in the WPF Designer.
In XAML view, insert the following XAML after the <UserControl>
opening tag. This XAML creates a gradient with a contrasting gradient border. When the control is clicked, the gradients are changed to generate a pressed button look. For more information, see Styling and Templating.
<UserControl.Resources>
<LinearGradientBrush x:Key="NormalBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF" Offset="0.0"/>
<GradientStop Color="#CCC" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PressedBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#BBB" Offset="0.0"/>
<GradientStop Color="#EEE" Offset="0.1"/>
<GradientStop Color="#EEE" Offset="0.9"/>
<GradientStop Color="#FFF" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="BorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#CCC" Offset="0.0"/>
<GradientStop Color="#444" Offset="1.0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="PressedBorderBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#444" Offset="0.0"/>
<GradientStop Color="#888" Offset="1.0"/>
</LinearGradientBrush>
<Style x:Key="SimpleButton" TargetType="{x:Type Button}" BasedOn="{x:Null}">
<Setter Property="Background" Value="{StaticResource NormalBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource NormalBorderBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="Grid">
<Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"/>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" Value="{StaticResource PressedBrush}" TargetName="Border"/>
<Setter Property="BorderBrush" Value="{StaticResource PressedBorderBrush}" TargetName="Border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
Apply the SimpleButton
style defined in the previous step to the Cancel button by inserting the following XAML in the <Button>
tag of the Cancel button.
Style="{StaticResource SimpleButton}
Your button declaration will resemble the following XAML:
<Button Height="23" Margin="41,52,98,0" Name="button1" VerticalAlignment="Top"
Style="{StaticResource SimpleButton}">Cancel</Button>
Build the project.
Open Form1
in the Windows Forms Designer.
The new style is applied to the button control.
From the Debug menu, select Start Debugging to run the application.
Click the OK and Cancel buttons and view the differences.
.NET Desktop feedback feedback
.NET Desktop feedback is an open source project. Select a link to provide feedback:
Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowTraining
Module
Design consistent .NET MAUI XAML pages by using shared resources - Training
Learn how to use static and dynamic shared resources to build a .NET Multi-platform App UI (MAUI) user interface. And see how styles can make the user interface both consistent and accessible.