2011-03-24 3 views
0

열거 자의 내용이나 문자열 배열 또는 특정 DataTable을 DatagridComboBox의 항목으로 넣으 려면 열거 자나 문자열 배열 또는 DataTable 내용을 DataGridComboBox에 바인딩 할 수 있습니까?열거 자 또는 변수를 WPF의 DataGrid에서 DataGridComboBox에 바인딩하는 방법?

예를 들어, DataGrid에로드 할 사용자 지정 열에 레코드를 바인딩하고 DataGrid의 열 (Column)이 DataGridComboBox 인 경우 Datatable의 셀 값에 따라 레코드를 바인딩합니다. DataGridComboBox의 해당 항목을 자동으로 선택합니다.

DataGridTextBox 로의 열 바인딩은 쉽지만 DataGridComboBox 같은 열은 혼란스러워 보입니다.

첫 번째 문제는 DataGridComboBox에 항목 (열거 자 또는 문자열 배열 또는 Datatable 등)의 항목을 넣는 것입니다. 두 번째 문제는 해당 항목을 포함하는 DataTable을로드 할 때 해당 항목을 선택하는 것입니다. 레코드를 DataGrid에 저장합니다. 뒤에 코드에서 미리

답변

2
<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"  
    Title="Window1" Height="300" Width="300"> 
    <StackPanel> 

     <toolkit:DataGrid Name="dataGrid" ItemsSource="{Binding Path=.}" AutoGenerateColumns="False"> 
      <toolkit:DataGrid.Columns> 
       <toolkit:DataGridTemplateColumn> 
        <toolkit:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <ComboBox ItemsSource="{Binding Path=StringArray}" Width="100" 
             SelectedValue="{Binding Path=SelectedString}" /> 
         </DataTemplate> 
        </toolkit:DataGridTemplateColumn.CellTemplate> 
       </toolkit:DataGridTemplateColumn> 
      </toolkit:DataGrid.Columns> 
     </toolkit:DataGrid> 


    </StackPanel> 
</Window> 

에서

감사 :

namespace WpfApplication1 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
      ObservableCollection<TestClass> collection = new ObservableCollection<TestClass>(); 
      collection.Add(new TestClass()); 
      collection.Add(new TestClass()); 
      collection.Add(new TestClass()); 

      dataGrid.DataContext = collection; 
     } 
    } 

    public class TestClass 
    { 
     private static string[] stringArray = { "Option One", "Option Two", "Option Three" }; 

     public string[] StringArray 
     { 
      get 
      { 
       return stringArray; 
      } 
     } 

     public string SelectedString 
     { 
      get; 
      set; 
     } 
    } 
} 

당신은 뒤에 일부 데이터/제어 윈도우의 데이터 컨텍스트를 설정해야합니다 그리고 당신은 사람들의 속성을 사용할 수 있습니다 개체를 컨트롤에 바인딩 할 수 있습니다. 어떻게 내가 XAML의 코드 숨김에서 변수에 액세스 할 수 있습니다

나는이

+0

도움이되기를 바랍니다 그러나 나는 또 다른 문제가? 내가 몇 가지 예제를 발견했지만 어쨌든 내가 이해할 수 없다 – Miguel

+0

그것은 데이터 테이블에 그리드 (또는 그리드의 부모)의 datacontext를 설정하는 데 필요한 textcolumns조차도 datacontext에 있습니다. 다른 모든 컨트롤/열에 대해서도 마찬가지입니다. Path를 datacontext의 적절한 속성으로 설정하기 만하면됩니다. – hyp

+0

ComboBox에서 값 선택 이미 이해하지만 ComboBox를 항목과 바인딩하면 실제로 XAML의 DataContext에서 아무 것도 액세스하지 못하기 때문에 이해할 수 없습니다. 나는 당신의 예제를보고 쉽게 보이지만 ItemsSource에서 Binding Path를 설정하려고하면 변수를 인식하지 못하기 때문에 내가 할 수 없습니다. – Miguel

관련 문제