我有一个具有以下属性的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'
答案 0 :(得分:0)
该问题已通过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;