2012-07-05 2 views
0

사용자 지정 컨트롤이 포함 된 Silverlight 컨트롤에 DataGrid가 있습니다. 이러한 사용자 지정 컨트롤은 그리드 외부에서도 사용되며 완벽하게 작동합니다. 그러나 그리드 내에서 사용되는 경우 포커스가 없어지면 (즉, 다른 셀로 이동 한 경우) 자체 재설정됩니다.포커스 손실시 DataGrid 내의 Silverlight 컨트롤이 다시로드됩니다.

내 사용자 지정 컨트롤이 아닌지 테스트하기 위해 자동 완성 상자가 포함 된 열을 추가했습니다. 상자에 입력하고 다음 열로 이동하면 상자가 지워집니다.

디버깅 할 때로드 된 컨트롤이 포커스를 잃은 후에 호출되는 것을 볼 수 있습니다.이 이벤트는 다음 필드로 이동할 때 다시로드되거나 다시 생성된다는 것을 확인합니다. 그것은 단순히 어떤 이유로 그리드를 변경하지 않는 것입니까?

XAML (여기 이상한 아주 기본적인, 아무것도)의

 <sdk:DataGridTemplateColumn Header="Description"> 
      <sdk:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
          <sdk:AutoCompleteBox Name="Description" Width="100" /> 
         </DataTemplate> 
        </sdk:DataGridTemplateColumn.CellTemplate> 
       </sdk:DataGridTemplateColumn> 

답변

1

이 완벽하게 정상적인합니다 - CellTemplate이 셀이 렌더링 될 때 사용되며, 당신은 가상화가 켜져있는 경우 행이보기 밖으로 스크롤 할 때 그들이 파괴 얻을 .

CellEditingTemplate은 표 셀이 편집 모드로 전환 될 때 사용됩니다.이 시점에서 편집 컨트롤이 생성됩니다 - 편집 컨트롤이 필요할 때 생성됩니다. 셀에 초점을 맞추는 것만으로는 셀을 편집 모드로 설정하는 것만으로는 충분하지 않습니다.

+0

물론 아! 고마워, 내가 XAML을 한 이후로 한참 동안. –