我正在构建一个电子邮件发送应用程序。在我的窗口中,我有以下数据网格:
<DataGrid AutoGenerateColumns="False" CanUserAddRows="False" HorizontalAlignment="Stretch" Name="dgdTo" VerticalAlignment="Stretch" ItemsSource="{Binding}" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="contactFName" IsReadOnly="True" Binding="{Binding Path=FirstName}" Header="First Name" Width="2*"/>
<DataGridTextColumn x:Name="contactLName" IsReadOnly="True" Binding="{Binding Path=LastName}" Header="Last Name" Width="2*"/>
<DataGridTextColumn x:Name="contactEmail" IsReadOnly="True" Binding="{Binding Path=Email}" Header="E-mail" Width="2*"/>
<DataGridCheckBoxColumn x:Name="mailSend" Header="Send mail" Width="*"/>
</DataGrid.Columns>
</DataGrid>
前三列绑定到数据库中的ContactPerson表。最后一列表示是否应该向该人发送电子邮件。因为,我在ContactPerson对象中没有字段'boolean SendMail',我需要另一种方法来获取复选框的值。
如何获取/设置特定行的复选框值?(C#)
答案 0 :(得分:1)
首先,要为datagrid设置值,请创建一个DataTable(内存中的数据库)。在该DataTable中,列为FirstName
,LastName
,Email
。它们都是字符串类型。
添加一个应为Boolean DataType的列,并将其命名为Sendmail
。以这种方式绑定Binding="{Binding Path=Sendmail}"
。现在,当您提供gridview的数据源时,那么在最后一列中的任何位置都是真的,将勾选并取消选中false。
答案 1 :(得分:1)
您需要在数据库和用户界面之间引入一个中间对象(ViewModel)。
在您的情况下,这可能是ObservableCollection UIContactPerson
,其中UIContactPerson
是数据库中ContactPerson
的副本,其中包含 SendMail 布尔属性。
然后,不是将UI直接绑定到数据库对象,而是绑定到ViewModel。显然,您还需要通过某种方式从基础数据存储中刷新数据并发回更改。