2016-06-24 16 views
0

Мне нужно сделать мой столбец DataGrid доступным для редактирования, но не могу понять, как это сделать. Когда я пытаюсь редактировать столбец, я получаю исключение «EditItem не допускается для этого представления».Сделать столбец DataGrid WPF редактируемым

Мой XAML:

<DataGrid IsReadOnly="False" AutoGenerateColumns="False" Margin="6,6,5,18" Name="dataGrid1" ItemsSource="{Binding MyDictionary}" CellEditEnding="dataGrid1_editCells"> 
     <DataGrid.Columns> 
      <DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding Key}" /> 
      <DataGridTextColumn IsReadOnly="False" Header="Value" Binding="{Binding Value}" /> 
     </DataGrid.Columns> 
    </DataGrid> 

И .cs:

public partial class MyView : Window 
{ 
    private Dictionary<string, string> myDictionary = new Dictionary<string, string>(); 

    public Dictionary<string, string> Dictionary { get { return myDictionary ; } set { myDictionary = value; } } 

    public MyView() 
    { 
     // Here is some code that fills dictionary 

     InitializeComponent(); 
     this.DataContext = this; 
    } 
} 

В чем проблема? Как я могу сделать свою вторую колонку редактируемой?

+0

Почему бы не использовать наблюдаемый коллекцию? – riteshmeher

ответ

1

Если вы связываетесь со словарем, он перечисляет содержимое как KeyValuePair экземпляров, которые являются структурой. Вы не можете редактировать члены структуры, сохраняя один и тот же экземпляр (и в этом случае свойства get-only).

Привяжите вместо списка экземпляры классов.

+0

Фактически, вы можете изменить член структуры, но не рекомендуется – wiero

+0

@wiero: Когда вы обращаетесь к структуре, вы получаете ее копию, поэтому, если вы отредактируете эту структуру, вы не измените экземпляр, который вы, вероятно, «имели в виду», чтобы редактировать. Вам нужно будет переназначить этот экземпляр туда, откуда он был взят, какие привязки не будут выполняться. –

+0

спасибо, теперь я понимаю, что вы имели в виду – wiero

0

DataGrid работает с коллекциями, а Dictioanry - это коллекция KeyValuePair. Если вы посмотрите на эту структуру, вы увидите, что она не изменчива.

Смежные вопросы