WPF ListView 를 데이터바인딩 없이 코드에서 동적으로 생성하는 방법

안녕하세요,

코드에서 ListView 를 동적으로 생성해야 되는 경우가 불가피하게 발생되었습니다. 아래의 코드는 ChatGPT 에서 얻는 코드인데요. ^^;; 컬럼 헤더는 동적으로 잘 생성되는데, ROW 데이터를 추가 부분에 문제가 있습니다.

            // Create a GridView
            GridView gridView = new GridView();

            // Define the number of columns you want dynamically
            int columnCount = 5; // Change this to your desired column count

            // Create and add columns dynamically
            for (int i = 0; i < columnCount; i++)
            {
                GridViewColumn column = new GridViewColumn();
                column.Header = $"Column {i + 1}";
                column.Width = 100; // Set your desired column width
                gridView.Columns.Add(column);
            }

            // Set the GridView as the ListView's view
            dynamicListView.View = gridView;

            // Add row data dynamically
            for (int i = 0; i < 3; i++) // Add 3 rows as an example
            {
                ListViewItem item = new ListViewItem();

                // Create an array of strings representing row data
                string[] rowData = new string[columnCount];
                for (int j = 0; j < columnCount; j++)
                {
                    rowData[j] = $"Row {i + 1}, Column {j + 1}";
                }

                // Set the ListViewItem's content to the row data
                item.Content = rowData;

                // Add the ListViewItem to the ListView
                dynamicListView.Items.Add(item);
            }

본 코드를 실행하면 아래와 같은 결과가 나옵니다.

image

각 컬럼에 원하는 rowData 값이 나오게 하려면 rowData 를 어떻게 넣어야 될까요?

1개의 좋아요

WPF는 기본적으로 Winform과 다르게 바인딩 기반으로
추가가 되고 있는거 같네요 :slight_smile:

ListView

1개의 좋아요

감사합니다. 그런데, 저는 바인딩을 이용하지 않는 방법을 찾고 있어서요. ㅠㅠ
가령, 컬럼 인덱스(?)를 이용한 방법 같은…

1개의 좋아요

column.DisplayMemberBinding = new Binding($“[{i}]”);

컬럼 추가하는 for문 안에 위 코드 추가해보세요.

3개의 좋아요

와우! 이거였군요!! 잘 동작합니다!!!
감사합니다. :heart: :heart: :heart:

2개의 좋아요