【发布时间】:2015-02-19 07:59:14
【问题描述】:
我有一个与数据源绑定的数据网格。我将 isReadOnly="False" 属性设置为编辑。当我单击单元格时,会发生异常。 Xaml 代码:-
<DataGrid Name="dataGrid1" AutoGenerateColumns="True" IsReadOnly="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Fee Head" Width="250" Binding="{Binding feename}" IsReadOnly="False"/>
<DataGridTextColumn Header="Amount(Rs.)" Width="250" Binding="{Binding NewAmount}"/>
<DataGridTextColumn Visibility="Hidden" Header="cnt" Width="10" Binding="{Binding id}"/>
</DataGrid.Columns>
</DataGrid>
.cs 代码:-
var obje = (from tab in cd.FeeDeclarationDetails
join tab2 in cd.AccountHeadDBs on tab.AccountHeaddbid equals tab2.ID
where tab.AccountHeaddbid == tab2.ID
select new { feename = tab2.Head_Name, tab.NewAmount, cnt = (cd.FeeDeclarationDetails.Where(A => A.AccountHeaddbid == 1 && A.FeeDeclarationID == 1).ToList().Count > 0 ? cd.FeeDeclarationDetails.Where(A => A.AccountHeaddbid == 1 && A.FeeDeclarationID == 1).ToList().Count : 0) }).ToList();
dataGrid1.ItemsSource = obje;
我正在使用 linq2sql。例外情况是:- TwoWay 或 OneWayToSource 绑定无法对“f__AnonymousType63[System.String,System.Nullable1[System.Int32],System.Int32]”类型的只读属性“NewAmount”起作用。所以我该如何解决这个问题.
【问题讨论】:
-
正如例外所说,您得到它是因为您要显示的
Model具有一个或多个只读属性。您可以通过在引用这些属性的“绑定”表达式中添加...,Mode=OneWay}来消除异常。 -
我正在处理窗口窗体,如果我添加 Mode="OneWay" 则单元格不可编辑。并设置“TwoWay”然后发生异常
-
您是对的,但在这种情况下,问题是您当前设计创建的“模型”无法执行您想要的操作,因为只读属性无法编辑。下一个(或上一个)问题可能是如何将编辑后的模型返回到后端数据库。我认为不幸的是,您的实际问题可能太大而无法放入单个论坛问题或回复中,建议您先阅读一些关于 MVVM 模式的无数入门网络文章。
标签: wpf xaml linq-to-sql wpfdatagrid