C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 【wpf】datagridで設定したチェックボックス


(過去ログ 133 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■78783 / inTopicNo.1)  【wpf】datagridで設定したチェックボックス
  
□投稿者/ のりっち (11回)-(2016/02/16(Tue) 19:43:03)

分類:[.NET 全般] 

いつもお世話になっております。
wpfのdatagridのDataGridTemplateColumnで列の1段目にチェックボックスを
追加しました。

そこで、セルを移動したタイミングまたは、セルを編集完了したタイミング等で、
チェック済みのチェックボックスがどれか取得したいと考えているのですが、
どうすればよいのでしょうか。

通常のチェックボックスであれば、IsCheckedプロパティを確認すればよいのですが、
datagridでチェックボックスを設定した場合は、どのように確認すればよいかわからず、
質問させていただきました。

【XAMLで追加したチェックボックス】
<DataTemplate>
<CheckBox
HorizontalAlignment="Center"
VerticalAlignment="Center">
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>




引用返信 編集キー/
■78784 / inTopicNo.2)  Re[1]: 【wpf】datagridで設定したチェックボックス
□投稿者/ Hongliang (406回)-(2016/02/16(Tue) 20:16:14)
仮想化とか絡んできたりするかもしれないので、コントロールの状態を取ってくるのは危険です。
Boolean型のプロパティとバインディングするようにしてください。
参考:
http://gushwell.ldblog.jp/archives/52334608.html
引用返信 編集キー/
■78797 / inTopicNo.3)  Re[2]: 【wpf】datagridで設定したチェックボックス
□投稿者/ のりっち (12回)-(2016/02/17(Wed) 09:15:18)
No78784 (Hongliang さん) に返信
> 仮想化とか絡んできたりするかもしれないので、コントロールの状態を取ってくるのは危険です。
> Boolean型のプロパティとバインディングするようにしてください。
> 参考:
> http://gushwell.ldblog.jp/archives/52334608.html

参考を確認しましたが、datagridで値を変更したり、チェックボックスをONにした場合、
変更値をどのように取得すればよいのでしょうか。
引用返信 編集キー/
■78798 / inTopicNo.4)  Re[3]: 【wpf】datagridで設定したチェックボックス
□投稿者/ Hongliang (407回)-(2016/02/17(Wed) 09:43:12)
改めて挙げたページを見返すと、CheckBoxを使ったDataGridTemplateColumnは使われていませんでしたね。
すいません。
まあサンプルのDatePickerと基本的に同じ感じです。
<DataTemplate>
    <CheckBox IsChecked="{Binding ...}" .../>
</DataTemplate>
みたいな。このサンプルの型定義を使うなら、{Binding IsRegular}ですね。
(なお、{Binding IsRegular}と{Binding Path=IsRegular}は同等です)

さて、このサンプルで使われている名前で言うと、
・DataGridにはUserのコレクションであるObservableCollection<User>型のUsersプロパティが
 バインドされています。
・個々の行には、Usersに含まれている個々のUserオブジェクトがバインドされています。
・ある行の特定の列には、その行のUserオブジェクトの、{Binding Path=***}で
 示されているプロパティがバインドされています。
・コントロールの状態が変更されると、バインド先の値が変更されます。

つまり、バインディングしておけば、チェックボックスのチェック状態を変更すると、
そのUserのIsRegularが自動的に変更されます。
プログラムから確認する場合、Usersから個々のUser要素のIsRegularをチェックする形になります。

なお、プログラムの方でIsRegularを変更してそれを画面に自動的に反映させたい場合、
UserクラスにINotifyPropertyChangedインターフェイスを実装させ、
IsRegularのset時にPropertyChangedイベントを発生させる必要があります。

引用返信 編集キー/
■78803 / inTopicNo.5)  Re[4]: 【wpf】datagridで設定したチェックボックス
□投稿者/ のりっち (13回)-(2016/02/17(Wed) 11:04:50)
バインド先の値から持ってこれるということですね。
いただいたアドバイスを元に実装しています。
ご回答ありがとうございます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -