質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

1296閲覧

WPF DataGridCheckBoxColumnで余白をクリックしたときに処理を行いたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2023/10/12 00:55

実現したいこと

DataGridを用いたWPFアプリケーションを作っています。
DatGridCheckBoxColumnのカラムに対して、余白をクリックしたときにもチェックが入るようにしたいです。

イメージ説明

現在、キャプチャ画像のように「紐づける」カラムにDataGridCheckBoxColumnを使用しています。
ただカラム名称が少し長くなってしまい、カラム幅に対するチェックボックスが小さくなってしまいます。
デザインなども考慮した結果、チェックボックスのサイズおよびカラム名称はこのまま
青い部分をクリックしたときもチェックをON・OFF切替できれば最良となりました。
(青い部分は画像編集ソフトにて加工したものです)

疑問点

青い部分をクリックしたときのイベント(もしくはコマンド)を掴む方法を知りたいです。

ソースコード

DataGrid部分のソースは以下のようになっています。
基本的に値はBindingを用い、UIやマウスなどの操作はTriggerやコードビハインドを用いています。

C#

1 <DataGrid Grid.Row="0" FontSize="13" x:Name="DataGrid1" 2 AutoGenerateColumns="False" CanUserAddRows="False" HeadersVisibility="All" 3 4 VirtualizingStackPanel.IsVirtualizing="True" 5 VirtualizingStackPanel.VirtualizationMode="Recycling" 6 CanUserDeleteRows="False" SelectionMode="Extended" SelectionUnit="FullRow" 7 EnableColumnVirtualization="False" EnableRowVirtualization="True" 8 AlternatingRowBackground="LightCyan" GridLinesVisibility="None" CanUserReorderColumns="False" 9 10 ItemsSource="{Binding DataGridValues}"> 11 12 <DataGrid.Columns> 13 <DataGridCheckBoxColumn Binding="{Binding IsChecked}" Header="紐づける" IsReadOnly="False"/> 14 <DataGridTextColumn Binding="{Binding SelectedGroupName}" Header="グループ名" IsReadOnly="True"/> 15 <DataGridTextColumn Binding="{Binding SelectedHostName}" Header="名前" IsReadOnly="True"/> 16 <DataGridTextColumn Binding="{Binding Comment}" Header="コメント" IsReadOnly="True"/> 17 </DataGrid.Columns> 18 19 <DataGrid.CellStyle> 20 <Style TargetType="DataGridCell"> 21 <Setter Property="VerticalAlignment" Value="Center"/> 22 <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 23 </Style> 24 </DataGrid.CellStyle> 25 </DataGrid>

補足

シングルクリックかダブルクリックかはどちらでも構いません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

追記です。
<DataGridCheckBoxColumn>のStyle設定で空っぽのCheckboxスタイルを割り当てる方法でもよさそうです。

xml

1<DataGrid ...> 2 <!--チェックボックスのスタイルを定義--> 3 <DataGrid.Resources> 4 <Style TargetType="CheckBox" x:Key="checkBoxStyle1" BasedOn="{StaticResource {x:Type CheckBox}}"/> 5 </DataGrid.Resources> 6 7 <DataGrid.Columns> 8 <!-- ElementStyleでチェックボックスのスタイルを変更 --> 9 <DataGridCheckBoxColumn Binding="{Binding IsChecked}" Header="紐づける" IsReadOnly="False" ElementStyle="{ StaticResource checkBoxStyle1}" />

投稿2023/10/12 02:43

hqf00342

総合スコア396

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/10/12 06:33

hqf00342様 追記もありがとうございます。たしかにこちらでも動作しますね!
guest

0

ベストアンサー

<DataGridCheckBoxColumn>の代わりにカスタムコントロールを作って置くのかなと思いましたが、単純にチェックボックスを置くだけで出来そうです。<DataGridCheckBoxColumn>行を以下に変更してみて試してください。

xml

1<DataGridTemplateColumn Header="紐づける"> 2 <DataGridTemplateColumn.CellTemplate> 3 <DataTemplate> 4 <CheckBox IsChecked="{Binding IsChecked}"/> 5 </DataTemplate> 6 </DataGridTemplateColumn.CellTemplate> 7</DataGridTemplateColumn>

もともと<DataGridCheckBoxColumn>は使いずらいのでこっちのほうがいいかもしれません。

投稿2023/10/12 01:49

編集2023/10/12 02:16
hqf00342

総合スコア396

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/10/12 02:01

hqf00342様 ご回答ありがとうございます。まさにやりたかったことで、ソースコードもご提示いただき大変助かりました! 確かにしっかり使うにはStyleなどをきちんと定義する必要がありそうですね...。ここから調整してみようと思います。
hqf00342

2023/10/12 02:04

<DataGridCheckBoxColumn>は2回クリックしないとチェックが入らない等、日本人の感覚に合わないですからね・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問