편집할 데이터가 많은 툴을 제작할 때, Winform에서 DataGridView 컨트롤을 자주 애용했습니다. 셀 형태로 되어있어서 여러 데이터를 한번에 확인하고 편집하기에 꽤나 편리했죠.


대략 이런 형태. 출처는 구글 이미지.


그런데 WPF에서는 DataGrid만 있고, DataGridView는 없더군요. 이런 날벼락이!! 애용하던 컨트롤이었는데... WPF에서는 쓸수 없나? 라고 구글링 했더니 WindowsFormsHost 기능을 통해 WPF에서 윈폼의 컨트롤을 가져와 사용할 수 있더군요.


일단, WPF 프로젝트에서 윈폼 컨트롤을 사용하기 위해 System.Windows.Forms, WindowsFormsIntergration 참조를 추가합니다.



다음 Window 태그에 다음 구문을 추가해줍니다.

xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"



이제 윈폼 컨트롤을 사용하기 위한 준비는 모두 마쳤습니다. 이제 원하는 윈폼 컨트롤을 ( DataGridView!! )를 가져다 사용하기만 하면 됩니다. DataGridView 사용을 위해 아래와 같이 XAML 코드를 추가해줍니다.

<wfi:WindowsFormsHost Margin="253,0,0,0">
	<wf:DataGridView x:Name="datagridview">
	</wf:DataGridView>
</wfi:WindowsFormsHost>



이제 코드에서 datagridview를 아래와 같이 사용해보면...

DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(string));
dt.Columns.Add("Col2", typeof(string));
dt.Rows.Add("Hello", "World");
datagridview.DataSource = dt;

짠~ WPF에서 DataGridView를 사용할 수 있습니다.



다만, WPF의 디자이너를 사용하는게 아닌 코드로 관리하는 거라 속성창을 통한 컨트롤 속성 변경은 안됩니다. 오로지, 코드로만 가능하죠.


참고 : http://geekswithblogs.net/lorint/archive/2006/09/09/90740.aspx

  1. bookingyo 2012.08.31 19:01 신고

    확실히 윈도우상에서 GUI 툴을 다루는 것은 윈폼이나 WPF 가 좋다는 생각이 듭니다.
    파이썬 같은 경우 생산성이 뛰어나간 하지만 GUI 쪽 모듈이 썩 맘에 드는게 없네요.
    파이위젯이나 파이큐티도 그다지 만족스럽게 깔끔한 구현코드가 나오질 않더라고요.

  2. bookingyo 2012.08.31 19:04 신고

    윈폼을 GUI frontend 로 놓고 파이썬으로 빌드를 진행시키도록 해봤었는데.. 디버깅이 짜증나서
    그냥 tkInter 를 사용하고 IDE 는 이클립스로 돌려버렸었네요.. :(

+ Recent posts