-
C# WPF DataGrid에 Row번호 출력 되는 칼럼 추가하기 (닷넷프레임워크 .net framework 4.0 기준)닷넷/WPF 2023. 8. 10. 14:58반응형
닷넷5.0 이상 기준으로는
https://kaki104.tistory.com/808
이 글을 참고 하면 되지만, 닷넷프레임워크 4.0에서는 Microsoft.Xaml.Behaviors.Wpf 1.1.39를 설치할 수 없기 때문에 다음의 두 가지 방법이 있습니다.
비하인드 코드에서
/// <summary> /// ListDetail.xaml에 대한 상호 작용 논리 /// </summary> private void Loaded(object sender, RoutedEventArgs e) { AddNumberColumn(gridDataDetail); } private void AddNumberColumn(DataGrid dataGrid) { DataGridTextColumn numberColumn = new DataGridTextColumn { Header = "#", Width = 40 }; numberColumn.Binding = new System.Windows.Data.Binding { Path = new PropertyPath("Items.IndexOf(Item)"), RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DataGrid), 1) }; dataGrid.Columns.Insert(0, numberColumn); }
코드 설명
이 코드는 .NET Framework 4.0에서 WPF (Windows Presentation Foundation)의 DataGrid 컨트롤에 행 번호 열을 추가하는 예제입니다. DataGrid는 테이블 형식의 데이터를 표시하는 데 사용되는 컨트롤입니다.
using System.Windows.Controls;: System.Windows.Controls 네임스페이스에 있는 클래스를 사용하기 위해 네임스페이스를 임포트합니다.
namespace DataGridNumberColumn: DataGridNumberColumn 네임스페이스를 정의합니다.
public class DataGridNumberColumn: DataGridNumberColumn 클래스를 정의합니다.
public static void AddNumberColumn(DataGrid dataGrid): AddNumberColumn 메서드를 정의합니다. 이 메서드는 DataGrid에 행 번호 열을 추가하는 역할을 합니다. 메서드는 DataGrid를 파라미터로 받습니다.
DataGridTextColumn numberColumn = new DataGridTextColumn: DataGridTextColumn 객체인 numberColumn을 생성합니다. 이 객체는 텍스트 기반의 열을 나타냅니다.
Header = "#": numberColumn의 헤더 (열 제목)를 "#"로 설정합니다.
Width = 40: numberColumn의 너비를 40으로 설정합니다.
numberColumn.Binding = new System.Windows.Data.Binding: numberColumn의 Binding을 설정합니다. 이를 통해 해당 열의 데이터 바인딩을 정의할 수 있습니다.
Path = new PropertyPath("Items.IndexOf(Item)"): 바인딩 경로를 설정합니다. "Items"는 DataGrid의 항목 컬렉션을 나타내며, "IndexOf(Item)"은 항목의 인덱스를 가져오는 것을 의미합니다.
RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DataGrid), 1): 바인딩의 상대 소스를 설정합니다. 여기서는 DataGrid를 찾는 조상 요소를 찾습니다. "1"은 DataGrid로부터 한 단계 위 조상을 찾도록 설정합니다.
dataGrid.Columns.Insert(0, numberColumn);: dataGrid의 Columns 컬렉션에 numberColumn을 첫 번째 열로 삽입합니다. 이렇게 하면 DataGrid에 행 번호 열이 추가됩니다.
xaml에서
<DataGrid x:Name="gridDataDetail" AutoGenerateColumns="True"> <!-- 행 헤더를 정의 --> <DataGrid.RowHeaderTemplate> <DataTemplate> <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}}, Path=DataContext.RowNumber}" /> </DataTemplate> </DataGrid.RowHeaderTemplate> </DataGrid>
위의 예시는 DataGrid.RowHeaderTemplate를 사용하여 행 헤더를 커스텀하게 정의하고, 텍스트 블록을 이용하여 행 번호를 표시하도록 설정합니다.
반응형'닷넷 > WPF' 카테고리의 다른 글
WPF Binding Path에 관하여 (바인딩 경로) (0) 2024.04.08 WPF DevExpress 뷰가 로드될 때 특정 컨트롤(TextBox, TextEdit 등등)에 Focus 주는 방법 (0) 2024.04.01 WPF Converter (컨버터, 값 변환기) (0) 2023.06.09 C# WPF에서 Binding(바인딩)이란? (0) 2023.04.07 C# WPF TextBlock이 렌더링 되지 않은 상태에서 ActualWidth 값이 계산되게 하는 방법 (0) 2023.03.28