Пошаговое руководство. Применение стилей к содержимому WPF
В этой статье показано, как применить стили к элементу управления Windows Presentation Foundation (WPF), размещенному на форме Windows Forms.
Необходимые компоненты
Для выполнения шагов, описанных в этом руководстве, вам понадобится Visual Studio.
Создание проекта
Откройте Visual Studio и создайте на Visual Basic или Visual C# проект приложения Windows Forms с именем StylingWpfContent
.
Примечание.
При размещении содержимого WPF поддерживаются только проекты C# и Visual Basic.
Создание типов элементов управления WPF
После добавления в проект типа элемента управления WPF можно разместить его в элементе управления ElementHost.
Добавьте в решение новый проект WPF UserControl. Используйте имя по умолчанию для этого типа элемента управления (
UserControl1.xaml
). Дополнительные сведения см. в разделе Пошаговое руководство. Создание содержимого WPF для формы Windows Forms во время разработки.Убедитесь в том, что элемент
UserControl1
выбран в представлении конструирования.В окне Свойства присвойте свойствам Width и Height значение 200.
Добавьте элемент управления System.Windows.Controls.Button в UserControl и присвойте свойству Content значение Отмена.
Добавьте второй элемент управления System.Windows.Controls.Button в UserControl и присвойте свойству Content значение ОК.
Выполните сборку проекта.
Применение стиля к элементу управления WPF
Для изменения внешнего вида и поведения элемента управления WPF к нему можно применить различные стили.
Откройте
Form1
в конструкторе Windows Forms.На панели элементов дважды щелкните
UserControl1
, чтобы создать экземплярUserControl1
на форме.Экземпляр
UserControl1
размещается в новом элементе управления ElementHost с именемelementHost1
.На панели смарт-тегов для
elementHost1
в раскрывающемся списке выберите пункт Редактировать содержимое.UserControl1
откроется в конструкторе WPF.В представлении XAML вставьте следующий код XAML после открывающего тега
<UserControl>
. Этот код XAML создает градиент с контрастной градиентной границей. При нажатии на элемент управления градиенты изменяются, формируя образ нажатой кнопки. Более подробную информацию см. в разделе Стилизация и использование шаблонов.<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>
Примените стиль
SimpleButton
, определенный на предыдущем шаге, к кнопке "Отмена", вставив приведенный ниже код XAML в тег<Button>
кнопки Отмена.Style="{StaticResource SimpleButton}
Объявление кнопки будет выглядеть так, как в XAML ниже.
<Button Height="23" Margin="41,52,98,0" Name="button1" VerticalAlignment="Top" Style="{StaticResource SimpleButton}">Cancel</Button>
Выполните сборку проекта.
Откройте
Form1
в конструкторе Windows Forms.Новый стиль применяется для элемента управления button.
Чтобы запустить приложение, в меню Отладка выберите команду Начать отладку.
Нажмите кнопки OK и Отмена и просмотрите различия.
См. также
.NET Desktop feedback