-2

ItemsSource가 ObservableCollection이 아닌 경우 DataGridView를 사용하여 셀을 편집 할 수 없다는 것을 알고 꽤 오랜 시간이 걸렸습니다. 그 가정에 내가 맞습니까?ObservableCollection을 ItemsSource로 사용하지 않고 DataGridViewCell을 편집하십시오.

다른 DataGridView의 SelectedItem 속성이 ItemsSource 인 DataGridView가 있습니다. 불행히도 그 속성은 ObservalbeCollection이 될 수 없거나 그 속성에서 파생 될 수 없습니다.

내 구체적인 문제는 그 ItemsSource가 명시 적으로 OberservableCollection이 아닌 경우 DataGridView에서 셀을 편집 할 수 없다는 것입니다. 나는 그 이유 때문에 INotifyCollectionChanged Interface가 존재하기를 바랐다. 어떤 제안? 사전에

덕분에

이 ItemsSource

public class NdfCollection : NdfValueWrapper, IList<NdfValueWrapper>, INotifyCollectionChanged 
{ 
    private readonly ObservableCollection<NdfValueWrapper> _innerList = new ObservableCollection<NdfValueWrapper>(); 

    public NdfCollection(long offset) 
     : base(NdfType.List, offset) 
    { 

    } 

    public NdfCollection(IEnumerable<NdfValueWrapper> list, long offset) 
     : this(offset) 
    { 
     if (list != null) 
      foreach (NdfValueWrapper wrapper in list) 
       InnerList.Add(wrapper); 
    } 

    public ObservableCollection<NdfValueWrapper> InnerList 
    { 
     get { return _innerList; } 
    } 

    // Implementation of the Interfaces not pasted in here 
} 

역할을 제의 ViewModel 코드입니다 그리고 이것은 데이터 그리드

<DataGrid Grid.Row="1" MaxHeight="400" ItemsSource="{Binding Path=SelectedItem.Value, ElementName=propGrid}" 
        IsSynchronizedWithCurrentItem="True" 
        CanUserResizeRows="False" 
        CanUserAddRows="False" 
        CanUserDeleteRows="False" 
        AutoGenerateColumns="False" 
        SelectionMode="Single" 
        SelectionUnit="CellOrRowHeader" IsReadOnly="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Path=Type}" Header="Type" IsReadOnly="True" Width="*" /> 
      <!--<DataGridTextColumn Binding="{Binding}" Header="Biniary Value" IsReadOnly="False" Width="*" />--> 
      <DataGridTemplateColumn Header="Value" IsReadOnly="False" Width="*" CellEditingTemplateSelector="{DynamicResource editingControlTemplateSelector}" > 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding}" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

답변