Как применить стиль в элементах управления WPF? - PullRequest
8 голосов
/ 27 мая 2010

Я новичок в WPF и мне нужна ваша помощь.

Проблема: У меня 4 кнопки в форме, и мне нужно применить 2 разных стиля к паре из 2 кнопок.

Есть ли способ достичь этого?

Пожалуйста, предоставьте мне образец, если это возможно ...

Заранее спасибо ...

Ответы [ 3 ]

15 голосов
/ 27 мая 2010

Вы можете определить именованные стили и затем явно назначить их любым элементам управления по своему усмотрению. Вот пример для кнопок стилей: Начало работы с WPF: Button Control Part 2 - Основные стили

А вот пример:

<Window x:Class="WpfButtonStyling.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="250" Width="400">
    <Window.Resources>
        <Style x:Key="ButtonStyle1" 
               TargetType="{x:Type Button}">
            <Setter Property="Foreground"
                    Value="Red" />
            <Setter Property="Margin"
                    Value="10" />
        </Style>
        <Style x:Key="ButtonStyle2" 
               TargetType="{x:Type Button}">
            <Setter Property="Foreground"
                    Value="Blue" />
            <Setter Property="Margin"
                    Value="10" />
        </Style>
    </Window.Resources>

    <Grid>
        <StackPanel>
            <Button x:Name="FirstButton"
                    Content="First!"
                    Style="{StaticResource ButtonStyle1}"/>
            <Button x:Name="SecondButton"
                    Content="Second"
                    Style="{StaticResource ButtonStyle2}" />
        </StackPanel>
    </Grid>
</Window>
1 голос
/ 20 июля 2018

Если кто-то хочет написать Style непосредственно в кнопке, напишите, как показано ниже:

    <Button>
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Setter Property="FontFamily" Value="TimesNewRoman" />
                <Setter Property="FontSize" Value="50"/>
                <Setter Property="Background" Value="Green"/>
            </Style>
        </Button.Style>
    </Button>
0 голосов
/ 26 января 2014

Используйте этот код для разных стилей для разных кнопок или любых других

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         HorizontalAlignment="Left"
         VerticalAlignment="Top">
<Window.Resources>
    **<Style x:Key="a" TargetType="{x:Type TextBlock}">
        <Setter Property="FontFamily" Value="Verdana" />
        <Setter Property="FontSize" Value="50"/>
        <Setter Property="Background" Value="Indigo"/>
    </Style>
    <Style x:Key="b" TargetType="{x:Type TextBlock}">
        <Setter Property="FontFamily" Value="Arial"/>
        <Setter Property="FontSize" Value="16"/>
    </Style>
    <Style x:Key="c" TargetType="{x:Type Button}">
        <Setter Property="FontFamily" Value="TimesNewRoman" />
        <Setter Property="FontSize" Value="50"/>
        <Setter Property="Background" Value="Green"/>
    </Style>
</Window.Resources>
<Grid>
    <TextBlock Margin="26,41,39,0" Style="{StaticResource a}" Height="100" VerticalAlignment="Top">TextBlock with Style1</TextBlock>
    <TextBlock Margin="26,77,39,0" Height="32" VerticalAlignment="Top">TextBlock with no Style</TextBlock>
    <TextBlock Margin="26,105,67,96" Style="{StaticResource b}">TextBlock with Style2</TextBlock>
    <StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="26,170,-26,0">
        <Button Style="{StaticResource c}">
            <Bold >Styles</Bold></Button>
        <Button Style="{StaticResource c}">are</Button>
        <Button Style="{StaticResource c}">cool</Button>
    </StackPanel>
</Grid>

здесь я объявляю стиль как для textBlock, так и для кнопки. Используйте этот ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...