Guida per stilizzare il contenuto WPF
Questo articolo illustra come applicare stili a un controllo Windows Presentation Foundation (WPF) ospitato in un Windows Form.
Prerequisiti
Per completare questa procedura dettagliata, è necessario Visual Studio.
Creare il progetto
Aprire Visual Studio e creare un nuovo progetto di applicazione Windows Form in Visual Basic o Visual C# denominato StylingWpfContent
.
Nota
Quando si ospita contenuto WPF, sono supportati solo i progetti C# e Visual Basic.
Creare i tipi di controllo WPF
Dopo aver aggiunto un tipo di controllo WPF al progetto, è possibile ospitarlo in un controllo ElementHost.
Aggiungere un nuovo progetto UserControl WPF alla soluzione. Usare il nome predefinito per il tipo di controllo
UserControl1.xaml
. Per ulteriori informazioni, vedere Procedura dettagliata: Creazione di nuovo contenuto WPF su Windows Forms in fase di progettazione.In Visualizzazione struttura, assicurarsi che sia selezionato
UserControl1
.Nella finestra Proprietà, impostare i valori delle proprietà Width e Height a 200.
Aggiungere un controllo System.Windows.Controls.Button al UserControl e impostare il valore della proprietà Content su Cancel.
Aggiungere un secondo controllo System.Windows.Controls.Button al UserControl e impostare il valore della proprietà Content su OK.
Costruire il progetto.
Applicare uno stile a un controllo WPF
È possibile applicare stili diversi a un controllo WPF per modificarne l'aspetto e il comportamento.
Apri
Form1
nel Designer di Windows Form.Nella casella degli strumenti fare doppio clic su
UserControl1
per creare un'istanza diUserControl1
nel modulo.Un'istanza di
UserControl1
è ospitata in un nuovo controllo ElementHost denominatoelementHost1
.Nel pannello smart tag per
elementHost1
fare clic su Modifica contenuto ospitato dall'elenco a discesa.UserControl1
si apre nel WPF Designer.Nella visualizzazione XAML inserire il codice XAML seguente dopo il tag di apertura
<UserControl>
. Questo codice XAML crea una sfumatura con un bordo sfumato a contrasto. Quando si fa clic sul controllo, le sfumature vengono modificate per generare un'apparenza di pulsante pressato. Per ulteriori informazioni, vedere Styling e 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>
Applicare lo stile
SimpleButton
definito nel passaggio precedente al pulsante Annulla inserendo il codice XAML seguente nel tag<Button>
del pulsante Annulla.Style="{StaticResource SimpleButton}
La dichiarazione del pulsante sarà simile al codice XAML seguente:
<Button Height="23" Margin="41,52,98,0" Name="button1" VerticalAlignment="Top" Style="{StaticResource SimpleButton}">Cancel</Button>
Costruire il progetto.
Apri
Form1
in Progettazione di Windows Forms.Il nuovo stile viene applicato al controllo pulsante.
Dal menu Debug selezionare Avvia Debugging per eseguire l'applicazione.
Fare clic sui pulsanti OK e Annulla e visualizzare le differenze.
Vedere anche
.NET Desktop feedback