チュートリアル: WPF コンテンツにスタイルを適用する
この記事では、Windows フォームでホストされている Windows Presentation Foundation (WPF) コントロールにスタイルを適用する方法について説明します。
必須コンポーネント
このチュートリアルを完了するには Visual Studio が必要です。
プロジェクトの作成
Visual Studio を開き、StylingWpfContent
という名前の新しい Windows フォーム アプリケーション プロジェクトを Visual Basic または Visual C# で作成します。
注意
WPF コンテンツをホストする場合は、C# プロジェクトと Visual Basic プロジェクトのみがサポートされます。
WPF コントロール型を作成する
プロジェクトに追加した WPF コントロール型は、ElementHost コントロールでホストできます。
新しい WPF UserControl プロジェクトをソリューションに追加します。 コントロール型の既定の名前である
UserControl1.xaml
を使用します。 詳細については、「チュートリアル: デザイン時の Windows フォームでの新しい WPF コンテンツの作成」を参照してください。デザイン ビューで
UserControl1
が選択されていることを確認します。System.Windows.Controls.Button コントロールを UserControl に追加し、Content プロパティの値を「Cancel」に設定します。
2 つ目の System.Windows.Controls.Button コントロールを UserControl に追加し、Content プロパティの値を「OK」に設定します。
プロジェクトをビルドします。
WPF コントロールにスタイルを適用する
さまざまなスタイルを WPF コントロールに適用することで、外観や動作を変えることができます。
Windows フォーム デザイナーで
Form1
を開きます。ツールボックスで
UserControl1
をダブルクリックして、フォーム上にUserControl1
のインスタンスを作成します。UserControl1
のインスタンスは、elementHost1
という名前の新しい ElementHost コントロールでホストされます。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>
[Cancel] ボタンの
<Button>
タグに次の XAML を挿入することで、前の手順で定義したSimpleButton
スタイルを [Cancel] ボタンに適用します。Style="{StaticResource SimpleButton}
ボタン宣言は次の XAML のようになります。
<Button Height="23" Margin="41,52,98,0" Name="button1" VerticalAlignment="Top" Style="{StaticResource SimpleButton}">Cancel</Button>
プロジェクトをビルドします。
Windows フォーム デザイナーで
Form1
を開きます。新しいスタイルが Button コントロールに適用されます。
[デバッグ] メニューの [デバッグの開始] を選択してアプリケーションを実行します。
[OK] ボタンと [Cancel] ボタンをクリックして、違いを確認します。
関連項目
.NET Desktop feedback