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>

最初の3つの列は、データベースのContactPersonテーブルにバインドされています。最後の列は、その人に電子メールを送信する必要があるかどうかを示します。ContactPersonオブジェクトに「booleanSendMail」フィールドがないため、チェックボックスの値を取得する別の方法が必要です。

特定の行のチェックボックス値を取得/設定するにはどうすればよいですか?(C#)

4

2 に答える 2

1

まず、データグリッドに値を設定するには、DataTable(メモリ内のデータベース)を作成します。そのDataTableで、列、つまり、、を作成FirstNameLastNameますEmail。それらはすべて文字列型になります。

ブールデータ型である必要がある列を追加し、名前を付けますSendmail。このようにバインドしますBinding="{Binding Path=Sendmail}"。ここで、gridviewのデータソースを指定すると、最後の列にtrueがある場合は常に、チェックボックスがオンになり、falseのチェックが外されます。

于 2012-05-13T07:00:36.680 に答える
1

データベースとユーザーインターフェイス( ViewModel )の間に中間オブジェクトを導入する必要があります。

これは、あなたの場合のObservableCollectionである可能性があります。ここで、は、追加のSendMailブールプロパティを持つデータベースからのコピーです。UIContactPersonUIContactPersonContactPerson

次に、UIをデータベースオブジェクトに直接バインドする代わりに、ViewModelにバインドします。もちろん、基になるデータストアからデータを更新して変更を送り返す方法も接続する必要があります。

于 2012-05-13T08:27:21.480 に答える