0

我正在构建一个电子邮件发送应用程序。在我的窗口中,我有以下数据网格:

<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#)

4

2 回答 2

1

您需要在数据库和用户界面(ViewModel)之间引入一个中间对象。

在您的情况下,这可能是ObservableCollectionUIContactPerson其中是带有附加SendMail布尔属性的数据库UIContactPerson副本。ContactPerson

然后,您无需将 UI 直接绑定到数据库对象,而是绑定到 ViewModel。显然,您还需要连接一些从底层数据存储中刷新数据并将更改发回的方法。

于 2012-05-13T08:27:21.480 回答
1

首先,要为您的数据网格设置值,请创建一个 DataTable(内存中的数据库)。在该 DataTable 中创建列,即FirstName, LastName, Email。它们都将是字符串类型。

添加应为 Boolean DataType 的列并将其命名Sendmail。以这种方式绑定它Binding="{Binding Path=Sendmail}"。现在,当您提供gridview的数据源时,最后一列复选框中的任何地方都会被勾选并取消选中是否为假。

于 2012-05-13T07:00:36.680 回答