편집할 데이터가 많은 툴을 제작할 때, 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