[WPF] WPF DataGird(데이터그리드) 특정 Row 컬러 변경하기
- C#/WPF
- 2021. 4. 4. 11:27
안녕하세요.
오늘은 WPF 에서 데이터그리드 컨트롤 다루는 방법에 대해서 알려 드리려고 합니다.
그 중에서도, 데이터그리드에서 특정 Row의 색상을 변경하는 방법에 대해서 알려 드리려고 합니다.
방법을 익히시면 두고두고 유용하게 사용하실 수 있을거라 생각합니다!
그럼 바로 예제 코드를 작성해서 어떻게 Row의 색상을 변경하는지 보여드리도록 하겠습니다.
MainWindow.xaml
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
|
<Window x:Class="WpfApp6.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:WpfApp6"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="400">
<Window.DataContext>
<local:StudentViewModel/>
</Window.DataContext>
<StackPanel>
<DataGrid
Name="uiDataGrid_Main"
AutoGenerateColumns="true"
IsReadOnly="True"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
MouseLeftButtonUp="uiDataGrid_Main_MouseLeftButtonUp"
ItemsSource="{Binding Students,
UpdateSourceTrigger=PropertyChanged}"
ScrollViewer.CanContentScroll="True"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
</StackPanel>
</Window>
|
cs |
MainWindow.xaml.cs
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
31
32
33
34
35
36
37
38
|
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace WpfApp6
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void uiDataGrid_Main_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
StudentViewModel stu = new StudentViewModel();
for(int index = 0; index < stu.Students.Count; index++)
{
DataGridRow row = (DataGridRow)uiDataGrid_Main.ItemContainerGenerator.ContainerFromIndex(index);
if (row != null)
{
if(stu.Students[index].Name.Equals("홍길동"))
{
SolidColorBrush brush = new SolidColorBrush(Color.FromArgb(200, 255, 0, 0));
row.Background = brush;
}
}
}
}
}
}
|
cs |
StudentViewModel.cs
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
using System.Collections.ObjectModel;
using System.ComponentModel;
namespace WpfApp6
{
public class StudentViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private ObservableCollection<Student> _student;
public ObservableCollection<Student> Students
{
get
{
if (_student == null)
{
_student = new ObservableCollection<Student>();
}
return _student;
}
set
{
_student = value;
OnPropertyChanged("Students");
}
}
public StudentViewModel()
{
Students.Add(new Student { Name = "홍길동", Age = "20", Address = "서울" });
Students.Add(new Student { Name = "조길동", Age = "21", Address = "서울" });
Students.Add(new Student { Name = "아길동", Age = "22", Address = "서울" });
Students.Add(new Student { Name = "이길동", Age = "23", Address = "서울" });
Students.Add(new Student { Name = "유길동", Age = "24", Address = "서울" });
Students.Add(new Student { Name = "정길동", Age = "10", Address = "서울" });
Students.Add(new Student { Name = "김길동", Age = "20", Address = "서울" });
Students.Add(new Student { Name = "권길동", Age = "30", Address = "서울" });
Students.Add(new Student { Name = "임길동", Age = "40", Address = "서울" });
Students.Add(new Student { Name = "라길동", Age = "50", Address = "서울" });
}
}
public class Student
{
public string Name { get; set; }
public string Age { get; set; }
public string Address { get; set; }
}
}
|
cs |
실행 결과
위와 같이 이름이 “홍길동” 인 사람만 Row의 색상이 변경된 것을 확인하실 수 있습니다.
감사합니다.^^
728x90
'C# > WPF' 카테고리의 다른 글
[WPF] WPF Canvas X축 Y축 반전시키는 방법 (0) | 2021.04.04 |
---|---|
[WPF] WPF DataGird(데이터그리드) EventTrigger 사용방법 (0) | 2021.04.04 |
[WPF] MVVM 패턴 Button 컨트롤 선택된 버튼 배경색상 변경하기 (0) | 2021.03.21 |
[WPF] WPF MVVM 패턴 적용하여 DataGrid 컨트롤 동적 컬럼 데이터 바인딩하기 (0) | 2021.03.04 |
[WPF] MVVM 패턴 적용하여 동적으로 Button 컨트롤 생성하는 방법 (0) | 2021.03.03 |
이 글을 공유하기