共用方式為


逐步解說:設定 Windows Presentation Foundation 內容的樣式

更新:2007 年 11 月

本逐步解說會示範如何將樣式套用到 Windows Form 所裝載的 Windows Presentation Foundation (WPF) 控制項。

在這個逐步解說中,您會執行下列工作:

  • 建立專案。

  • 建立 WPF 控制項型別。

  • 將樣式套用到 WPF 控制項。

注意事項:

根據您目前使用的設定或版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定

必要條件

您需要下列元件才能完成此逐步解說:

  • Visual Studio 2008。

建立專案

第一步是建立 Windows Form 專案。

注意事項:

裝載 WPF 內容時,只支援 C# 和 Visual Basic 專案。

若要建立專案

建立 WPF 控制項型別

在將 WPF 控制項型別加入至專案後,即可將其裝載到 ElementHost 控制項中。

若要建立 WPF 控制項型別

  1. 將新的 WPF UserControl 加入至專案。使用控制項型別的預設名稱 UserControl1.xaml。如需詳細資訊,請參閱逐步解說:設計階段期間在 Windows Form 上建立新的 Windows Presentation Foundation 內容

  2. 在 [設計] 檢視下,確定已選取 UserControl1。如需詳細資訊,請參閱 HOW TO:在設計介面上選取並移動項目

  3. 在 [屬性] 視窗中,將 WidthHeight 屬性的值設定為 200。

  4. System.Windows.Controls.Button 控制項加入至 UserControl,並將 Content 屬性的值設定為 Cancel。

  5. 將第二個 System.Windows.Controls.Button 控制項加入至 UserControl,並將 Content 屬性的值設定為 OK。

  6. 建置專案。

將樣式套用到 WPF 控制項

您可以將不同的樣式套用到 WPF 控制項變更其外觀與行為。

若要將樣式套用到 WPF 控制項

  1. 在 Windows Form 設計工具中開啟表單 Form1。

  2. 在 [工具箱] 中,按兩下 [UserControl1],在表單上建立 UserControl1 的執行個體。

    UserControl1 的執行個體裝載在名稱為 elementHost1 的新 ElementHost 控制項中。

  3. 在 elementHost1 的智慧標籤面板中,從下拉式清單中按一下 [編輯裝載內容]。

    [UserControl1] 便會在 [WPF 設計工具] 中開啟。

  4. 在 XAML 檢視中,在 <UserControl> 開頭標記後插入下列 XAML。

    這段 XAML 會建立具有對比漸層框線的漸層。當按一下控制項,漸層就會變更,產生已按下按鈕的外觀。如需詳細資訊,請參閱設定樣式和範本

[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>

[xaml]

<Button Height="23" Margin="41,52,98,0" Name="button1" VerticalAlignment="Top"
                Style="{StaticResource SimpleButton}">Cancel</Button>

請參閱

概念

XAML 概觀

設定樣式和範本

參考

ElementHost

WindowsFormsHost

其他資源

移轉和互通性

使用 Windows Presentation Foundation 控制項

WPF 設計工具