2015-01-28 4 views
0

Я хотел бы включить редактирование на месте для ячеек в моем GridControl. Я установил свойство AllowEditing в TableView и Columns, но данные в моих ячейках до сих пор не могут быть отредактированы после двойного щелчка по ячейке. В контекстном меню включена только «копия». Мне не удалось найти решение.Включить редактирование на месте в ячейке в GridControl

NavigationStyle недвижимость в TableView установлен в "Cell"

Мой XAML.

<dx:PLinqInstantFeedbackDataSource x:Name="PLinqInstantFeedbackDataSource" ListSource="{Binding Path=TestCollectionSource}" DefaultSorting="Property1 ASC"/> 
    <dxg:GridControl EnableSmartColumnsGeneration="True" ItemsSource="{Binding Path=Data, ElementName=PLinqInstantFeedbackDataSource}" SelectionMode="Cell" IsManipulationEnabled="True"> 
     <dxg:GridControl.View> 
      <dxg:TableView AllowEditing="True" NavigationStyle="Cell" AllowFilterEditor="True" AlternateRowBackground="CornflowerBlue" ShowAutoFilterRow="True" /> 
     </dxg:GridControl.View> 
     <dxg:GridControl.Columns> 
      <dxg:GridColumn FieldName="Property1" AllowEditing="True" ReadOnly="False" /> 
      <dxg:GridColumn FieldName="Number" AllowEditing="True" ReadOnly="False" /> 
     </dxg:GridControl.Columns> 
    </dxg:GridControl> 

EDIT

ViewModel и ListSource класс

public class MainWindowViewModel : ObservableObject 
{ 

    public MainWindowViewModel() 
    { 

    } 

    private BindingList<TestClass> testCollection; 
    public BindingList<TestClass> TestCollection 
    { 
     get 
     { 
      var result = this.testCollection; 
      if (null == result) 
      { 
       lock(this) 
       { 
        result = this.testCollection; 
        if (null == result) 
        { 
         result = new BindingList<TestClass>(); 
         for (int i = 0; i < 1000000; i++) 
         { 
          result.Add(new TestClass() { Property1 = "test" + i, Number = i % 20 }); 
         } 

         this.testCollection = result; 
        } 
       } 
      } 
      return result; 
     } 
    } 

    public IListSource TestCollectionSource 
    { 
     get { return new ListSource(()=> this.TestCollection); } 
    } 
} 
public class ListSource : IListSource 
{ 
    public readonly Func<IList> innerListProvider; 
    public ListSource(Func<IList> innerListProvider) 
    { 
     this.innerListProvider = innerListProvider; 
    } 
    public IList GetList() 
    { 
     return this.innerListProvider(); 
    } 

    public bool ContainsListCollection 
    { 
     get { return false; } 
    } 
} 

public class TestClass : ObservableObject 
{ 
    private string property1; 
    public string Property1 
    { 
     get { return this.property1; } 
     set 
     { 
      this.property1 = value; 
      RaisePropertyChanged(() => this.Property1); 
     } 
    } 

    private int number; 
    public int Number 
    { 
     get { return this.number; } 
     set 
     { 
      this.number = value; 
      RaisePropertyChanged(() => this.Number); 
     } 
    } 
} 
+0

Есть ли GridControl пользовательский DataGrid? –

+0

@AmitRaz GridControl - это DataGrid из библиотеки wpf devexpress. –

+0

Что такое 'TestCollectioSource'? Можете ли вы предоставить код? – nempoBu4

ответ

0

Я получил answer от поддержки DevExpress.

PLinqInstantFeedbackDataSource - это источник данных только для чтения. Если вы хотите редактировать данные непосредственно в сетке, привяжите свою исходную коллекцию к свойству GridControl.ItemsSource без использования поставщика данных мгновенной обратной связи.