2012-10-26 3 views
1

나는 사용자가 셀에 데이터를 입력하는 것을 주 목적으로하는 DataGrid을 가지고있다.하나의 열에 대해서만 소스를 설정하는 방법

그러나이 표의 첫 번째 필드는 목록의 내용을 표시해야합니다.

단 하나의 열에 대해 데이터 소스를 설정하는 방법은 무엇입니까?

편집 : 나는 이런 식으로 뭔가를 달성하고자 :

내 댓글에 추가 enter image description here

+0

첫 번째 열의 행 데이터는 다른 열과 어떻게 관련되어 있습니까? 나는 모든 행에 대해 첫 번째 열은 그 행의 다른 열과 다르다는 것을 의미합니까? – blindmeis

+0

그림을 추가 할 수 있습니까? – blindmeis

+0

위 그림을 추가했습니다! –

답변

0

DataGrid.Columns에 자신의 DataGridTemplateColumn을 지정하고 DataGridTemplateColumn.CellTemplate을 해당 열에 배치 할 위치로 설정하십시오. 그러나 당신이 점에 바인딩을 설정할 수 있습니다, 내가 MyWindow.DataContext에의 SomeCategoryList라는 속성을 사용하고

<DataGrid.Columns> 
    <DataGridTemplateColumn Header="Fields"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
       <ComboBox ItemsSource="{Binding ElementName=MyWindow, Path=DataContext.SomeCategoryList}" 
          SelectedItem="{Binding SomePropertyOnDataItemInRow}" /> 
     </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 
</DataGrid.Columns> 

:

예를 들어, 당신이 원하는 경우는 필드의 다른 목록을 가리키는 ComboBox 할 수 필드 목록이 저장된 곳으로

+0

이 코드를 시도했지만 "DataGridColumn"을 추가하지 않고 어떤 종류인지 지정해야한다고 말합니다. 그래서 DataGridTemplateColumn을 시도했지만 "ItemTemplate"속성은 없습니다. –

+0

@DotNET 죄송합니다. 정확한 구문을 찾지 않고했습니다. 당신은'DataGridTemplateColumn'을 원할 것이고, 당신은'CellTemplate'을 설정할 것입니다.내 대답을 올바른 구문으로 업데이트했습니다. – Rachel

+0

콤보 상자를 사용하는 대신 어떻게 일반 텍스트 항목을 대체 할 수 있습니까? –

1

, 하나 쉬운 방법 당신의 itemssource 수집을 포장하고 모든 항목에 대한 목록을 추가하는 것입니다 -와 당신이 기대하는 데이터.

좋은 것은 당신이 당신의 첫 번째 열에 대해 다른 소스를 설정할 필요가 없습니다, 당신은 단지 새로운 목록 속성에 바인드 할 필요가

편집 :

내가 문제를 얻었기를 바랍니다.

List<MyObject> _list; 

당신 인 myObject가 ASC/제품 설명, GROUPBY, 데, Dispplayorder 속성을 포함

는 그리드에 대한 itemssource이 있다고 할 수 있습니다.

그래서 난 당신이 새로운

List<MyObjectWrapper> _wrapperlist; 

이 모음으로 끝날 필드 속성

public class MyObjectWrapper 
    { 
    public MyObject WrappedOject {get;set;} 
    public string Fields {get;set} 
    } 

을 MyObjectWrapper를 작성하고 추가 할 수는 표시하는 데 필요한 모든 정보가 있습니다.

+0

나는 내가 이해할 지 모르겠다. 기본적으로 나는 세포에서 사용자의 입력을 받아야하는 표를 가지고있다. 첫 번째 필드는 각 행의 범주로 사용됩니다. –

관련 문제