2014-04-08 1 views
1

나는 이상한 문제가 있습니다.wpf datagrid 사용자 행 추가 celldatatemplate 값 타기

내가

public ObservableCollection<OrgInfoProftraining> ListOrgInfoProftraining 
    { 
     get 
     { 
      return new ObservableCollection<OrgInfoProftraining>(_ListOrgInfoProftraining); 
     } 
     set 
     { 
      _ListOrgInfoProftraining = value.ToList(); 
      OnPropertyChanged("ListOrgInfoProftraining"); 

     } 
    } 

내가 첫 번째 행을 채우기

<Custom:DataGridTemplateColumn Header="Дата выдачи" Width="130" > 
    <Custom:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate > 
      <Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" /> 
     </DataTemplate> 
    </Custom:DataGridTemplateColumn.CellTemplate> 
</Custom:DataGridTemplateColumn> 

이 있고, 그 다음 다른 컨트롤 (행 잃게 초점) 및 날짜 선택기 (또는 값)에 클릭은 2 행을 탄다. 왜? 행 1을 채운 후 입력하려면 클릭하면 올바르게 작동합니다.

enter image description here

P.S. 나는 ObservableCollection이 될 수 있고, datecicker에서 날짜를 선택할 때 templatecolumn의 변화에 ​​반응하고 새 항목을 만들 수 있다고 생각합니다 ...

답변

0

음, MVVM과 DataGrid를 사용하면 DataGrid에 새 행을 추가 할 때 이벤트 행을 생성하지 않으므로 view-model은 새 요소에 대해 알지 못합니다.

두 개의 버튼 "추가"및 "제거"가 추가되었으므로 괜찮습니다. 안 좋은 해결책이 될 수 있지만, 그것은 빠른 =)

0

셀 서식이 다음 행에 재사용되기 때문에 셀 서식 및 편집을 분리 할 필요가있는 솔루션

여기에 몇 가지 가정을 가진, 그래서 문제가 발생 템플릿을 얻거나, 비 편집 모드에서 false로 설정의 IsEnabled 한

예를 들어

<Custom:DataGridTemplateColumn Header="Дата выдачи" 
           Width="130"> 
    <Custom:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding LicenseDateStart}" /> 
     </DataTemplate> 
    </Custom:DataGridTemplateColumn.CellTemplate> 
    <Custom:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" /> 
     </DataTemplate> 
    </Custom:DataGridTemplateColumn.CellEditingTemplate> 
</Custom:DataGridTemplateColumn> 

또는

<Custom:DataGridTemplateColumn Header="Дата выдачи" 
           Width="130"> 
    <Custom:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" IsEnabled="False"/> 
     </DataTemplate> 
    </Custom:DataGridTemplateColumn.CellTemplate> 
    <Custom:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" /> 
     </DataTemplate> 
    </Custom:DataGridTemplateColumn.CellEditingTemplate> 
</Custom:DataGridTemplateColumn>