티스토리 뷰

C# | WPF

[WPF/C#, XAML] 버튼 배경색 바꾸기

rimo (리모) 2021. 12. 23. 13:53

 

 

비주얼 스튜디오 버전 16.11.7

대상 프레임 워크 .NET Core 3.1

기준으로 작성된 글입니다.

 


 

 

 

 Brushes 클래스에는 다음과 같은 색상들이  정의되어 있습니다.

 이를 이용해 색상을 바꿀수도 있고

RGBA값을 직접 사용할수도 있습니다.

 

 

 

 

 

XAML에선 BackGround 속성을 사용해 버튼의 배경색을 바꿀 수 있습니다.

 

<!--정의된 이름-->
<Button Background="LightGray"/>

<!--RGBA값으로 설정-->
<Button Background="#FFD3D3D3"/>

 

 

 

 

C#에서는 Brushes 클래스의 정의된 이름을 사용해 배경색을 바꿀 수 있습니다.

 

// 정의된 이름
Button_LightGray.Background = Brushes.LightGray;


// RBGA값 직접 정의
// Color.FromArgb(Avalue, rValue, gValue, bValue)
Button_LightSlateGray.Background = new SolidColorBrush(Color.FromArgb(255, 119, 136, 153));

 

 

 

 

 

 

아래는 예시 코드입니다.

 

 

 

<Window x:Class="WpfApp1.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"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid Margin="10">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>


        <!--정의된 이름-->
        <Button Margin="10" Content="LightGray" 
                Background="LightGray"/>
        <Button Grid.Column="1" Margin="10" Content="Gray" 
                Background="Gray"/>
        <Button Grid.Column="2" Margin="10" Content="LightSlateGray"
                Background="LightSlateGray"/>
        
        

        <!--RGBA값으로 설정-->
        <Button Grid.Row="1" Margin="10" Content="LightGray"
                Background="#FFD3D3D3"/>
        <Button Grid.Column="1" Grid.Row="1" Margin="10" Content="Gray"
                Background="#FF808080"/>
        <Button Grid.Column="2" Grid.Row="1" Margin="10" Content="LightSlateGray"
                Background="#FF778899"/>
        
        
        
        <!--C# 코드로 설정-->
        <Button x:Name="Button_LightGray" Grid.Row="2" Margin="10" Content="LightGray"/>
        <Button x:Name="Button_Gray" Grid.Column="1" Grid.Row="2" Margin="10" Content="Gray"/>
        <Button x:Name="Button_LightSlateGray" Grid.Column="2" Grid.Row="2" Margin="10" Content="LightSlateGray"/>


    </Grid>
</Window>

 

 

...
namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            // 정의된 이름
            Button_LightGray.Background = Brushes.LightGray;


            // 변수에 저장 후 사용
            SolidColorBrush Gray = Brushes.Gray;
            Button_Gray.Background = Brushes.Gray;


            // RGBA값 직접 정의
            // Color.FromArgb(Avalue, rValue, gValue, bValue)
            Button_LightSlateGray.Background = new SolidColorBrush(Color.FromArgb(255, 119, 136, 153));

        }
    }
}

 

 

 

 

[참고자료]

 

 

Brushes Class (System.Windows.Media)

Implements a set of predefined SolidColorBrush objects.

docs.microsoft.com

 

 

 

C# Change A Button's Background Color

How can the background color of a button once another button is pressed? What I have at the moment is: ButtonToday.Background = Color.Red; And it's not working.

stackoverflow.com

 

 

 

 


 

공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.

댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday