2010-01-26 3 views
1

Silverlight DataGrid에 열을 추가하려고하지만 문제가 있습니다. (내가 프리즘 사용하고 있습니다) 내보기에 내가 생성자에서 아무 문제 열을 추가 할 수 있습니다,이 잘 작동합니다 - 그러나 DataContext를가 열이 추가 설정 될 때 나는 열을 추가하려고하면Silverlight DataGrid를 사용하는 동적 열

public MyView() 
{ 
    InitializeComponent(); 
    myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" }); 
} 

(디버깅 할 때 Columns.Count 증가 볼 수 있지만 새 열 렌더링되지 않습니다.

public IMyViewModel ViewModel 
{ 
    get { return DataContext as IMyViewModel ; } 
    set 
    { 
     DataContext = value; 
     myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" }); 
    } 
} 

이제 MVVM 패러다임을 존중하지 않는다는 것을 알고 있습니다. 이것은 코드 작성 방법이 아니지만 DataGrid에 바인딩 된 ItemSource가 변경 될 때 열을 설정하기 위해 View에서 이와 같은 몇 가지 진절머리가 나는 코드가 필요합니다. 사용자 입력에 따라 열이 커지고 축소되는 것을 볼 수 있으며 열을 추가/제거하고 이에 따라 바인딩을 설정해야합니다.

는 또한 시도 다음은 UI 스레드에서 실행되지 않았기 때문에 그것이 생각 -

myDatagrid.Dispatcher.BeginInvoke(() => 
{ 
    myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" }); 
}); 

답변

0

나는 더는 아마 조금 때 그 이미 동적으로 새로운 세포를 생성하는 데이터 그리드의 요구 생각 데이터를 표시합니다. 새 열을 추가 한 DataGridUpdateLayout을 호출하면 셀을 다시 레이아웃 할 수 있는지 알 수 있습니다.

+0

나는 효과가 없다고 생각합니다. 동일한 코드 줄을 실행하는 click 이벤트 처리기를 사용하여 단추를 사용자 정의 컨트롤에 추가하려고 시도했지만 열을 추가하지 않아도되었습니다. – jameskind