2014-04-08 20 views
1

我有一些奇怪的問題。WPF數據網格用戶添加行celldatatemplate值騎

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

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

     } 
    } 

我填的是第一排,然後單擊另一個控制(行失去焦點)和日期選擇器(或它的值)騎行到第2。爲什麼? 當填充ROW1我點擊進入後,它的工作是正確的。

enter image description here

附:我想它可以是ObservableCollection,它可以對templatecolumn中的更改作出反應,並在datepicker上選擇日期時創建新項目...

回答

0

那麼,當我們使用MVVM和datagrid時,當我們向datagrid添加新行時,我們可以沒有捕獲事件行的創建,所以視圖模型不知道新的元素。

我增加了兩個按鈕「添加」和「刪除」,它是確定的。 沒有很好的解決辦法可能是,但它快=)

0

出現該問題的原因是電池模板下一行重複使用,所以在這裏的一些假設是一個解決方案

你需要單獨電池模板和編輯模板或在非編輯模式ATLEAST都的IsEnabled設置爲false

<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>