2010-06-18 7 views
4

DataGrid가 IsReadOnly = FALSE로 설정된 경우 빈 열의 ComboBox가 빈 셀에서만 표시되는 이유는 무엇입니까 ??? DataTemplateColumn를 사용DataGrid가 IsReadOnly = FALSE 인 경우에만 WPF DataGridComboBoxColumn의 ComboBox가 표시됩니다.

<DataGridComboBoxColumn Width="*" IsReadOnly="False" Header="test" /> 

가 무슨 잘못이 DataGridComboBoxColumn와 함께 ... 항상 작동?

작품 :

<DataGridTemplateColumn Header="Schoolclass"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox Background="Blue" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

답변

9

모든 내장 DataGridColumns은 두 가지 스타일이있다. 하나는 셀이 편집 모드에 있지 않은 경우이고 다른 하나는 셀이 편집 모드에있는 경우입니다. 일반적으로 비 편집 모드에서는 텍스트 상자 만 표시하고 사용자가 예상 할 수있는 실제 컨트롤 (ComboBox, TextBox 등)은 표시하지 않습니다. 그리고 셀 편집을 시작하면 텍스트 블록이 적절한 컨트롤로 대체됩니다. DataReader를 IsReadOnly = true로 설정하면 셀이 편집 모드로 이동하지 않고 표시되는 동작을 의미합니다.

DataGridTemplateColumn을 만들 때 기본 제공되는 모든 DataGrid 논리를 바꿔야합니다. 예를 들어, DataGrid가 읽기 전용 일 때 템플릿으로 된 열을 읽기 전용으로 만들려면 두 값을 수동으로 바인딩해야합니다. 그리고 내장 열 (셀이 편집 모드가 아닐 때 텍스트 블록)과 동일한 동작을 원한다면 트리거를 사용하여 적절한 컨트롤 템플릿을 제공해야합니다.

내장 된 열 (예 : DataGridCheckBoxColumn)을 사용하는 경우 (예 : checkBoxes를 가운데로 맞추기 위해) ElmentStyle을 지정하면 DataGrid가 IsReadOnly = true로 설정되어 있어도 열의 셀을 모두 편집 할 수 있습니다 . 이것은 ElmentStyle을 지정할 때 DataGrid가 읽기 전용 일 때 확인란을 읽기 전용으로 만드는 논리를 포함하는 기본 스타일을 대체하기 때문에 발생합니다.

+0

이미 알아 냈어 ;-)하지만 좋은 요약 :) – msfanboy

관련 문제