wpf datagrid单元格编辑错误:( TwoWay或OneWayToSource绑定不适用于只读属性)

时间:2019-07-11 14:17:53

标签: c# wpf datagrid

我有一个具有以下属性的DataGrid:

<DataGrid x:Name="dg_words" ItemsSource="{Binding}" AutoGenerateColumns="False">
                <DataGrid.Columns>  
                    <DataGridTextColumn Header="Id" Binding="{Binding id}" />
                    <DataGridTextColumn Header="word" Binding="{Binding word}" IsReadOnly="False"/>                        
                </DataGrid.Columns>
</DataGrid>

此DataGrid有两列。第一个是只读列(Id),第二个是可编辑的(单词)。

我用一个列表来填充此DataGrid。

List<Tuple<int, string>> l = new List<Tuple<int, string>>();
l.Add(new Tuple<int, string>(1, "word 1"));
l.Add(new Tuple<int, string>(2, "word 2"));
l.Add(new Tuple<int, string>(3, "word 3"));

var l1 = (from p in l
          select new { Id = p.Item1, word = p.Item2 }).ToList();

dg_quran_words.ItemsSource = l1;

当我尝试编辑列词中的单元格时,抛出异常:

其他信息:TwoWay或OneWayToSource绑定不适用于类型为...的只读属性'word'

1 个答案:

答案 0 :(得分:0)

谢谢Pavel Anikhouski

该问题已通过Pavel在我的问题中发表评论的注释得以解决。 首先,添加以下类:

public class c_row
{
    public int id { get; set; }
    public string word { get; set; }
}

,最后: 替换我代码的最后4行以填充DataGrid。

var l1 = (from p in l
      select new c_row { Id = p.Item1, word = p.Item2 }).ToList();

dg_quran_words.ItemsSource = l1;