※ ChatGPTを利用し、要約された質問です(原文:WPFのチェックボックス)
WPFのチェックボックスの挙動について
このQ&Aのポイント
VisualBasic 2013 でWPFを利用してグリッドを作成しております。ユーザーコントロールにDataGridを配置し、Grid内にチェックボックスを1つ配置しています。現在、複数レコードでチェックボックスのチェックを付けた場合、画面をスクロールするとチェックが消える現象が発生しています。
該当するXAMLのコードでは、チェックボックスのスタイルを指定しています。未チェック時は透明で、チェック時は青くなる設定です。しかし、この設定によりチェックボックスの動作が想定と異なっているようです。
上記の現象が発生する原因と対策が分かる方がいらっしゃいましたら、ご教授いただけると幸いです。
VisualBasic 2013 でWPFを利用してグリッドを作成しております。
ユーザーコントロールにDataGridを配置し、Grid内にチェックボックスを1つ
配置しています。
データ表示後は1レコードに1つチェックボックスが配置された状態と
なります。
データ表示は問題なく行えるのですが、チェックボックスの動作が
想定と異なってしまいます。
・現在チェックボックスの挙動
複数レコードでチェックボックスのチェックを付けた場合、
画面をスクロールするとチェックが消える。
このような現象が発生する原因と対策がお分かりの方がいらっしゃいましたら
ご教授頂けると幸いです。
上記現象が発生するxamlは以下の通りです。
<UserControl x:Class="Grid_Tab_Roke_Detail"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Height="70" Width="1227" Background="White">
<UserControl.Resources>
<!-- ラジオボタンの共通styleを指定 -->
<!-- トグルボタン風に押すと色を変える -->
<Style TargetType="{x:Type CheckBox}"
BasedOn="{StaticResource {x:Type ToggleButton} }">
<Style.Triggers>
<!-- 未チェック時は透明 -->
<Trigger Property="IsChecked" Value="{x:Null}">
<Setter Property="Background" Value="Transparent" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Background" Value="Transparent" />
</Trigger>
<!-- チェック時は青 -->
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="Blue"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<Grid>
<CheckBox Content="選択" IsChecked="{Binding IsSelected.Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Margin="3,3,0,0" VerticalAlignment="Top" Width="48" Height="57"
/>
<TextBox x:Name="Text_HinNM" Text="{Binding 商品名, Mode=OneTime, StringFormat=\{0:N0\}}" HorizontalAlignment="Left" Height="21" Margin="304,22,0,27" TextWrapping="Wrap" VerticalAlignment="Center" Width="330" RenderTransformOrigin="0.406,0.026" Background="{x:Null}" FontFamily="Arial" VerticalContentAlignment="Center" FontWeight="Bold" MaxWidth="350" MinHeight="16" IsHitTestVisible="True" FontSize="16">
<TextBox.Foreground>
<SolidColorBrush Color="Black"/>
</TextBox.Foreground>
</TextBox>
</Grid>
</UserControl>
補足
ご回答ありがとうございます。 チェックボックスのチェック値を保存する変数などは準備しておりません。 変数はすぐにでも準備できるのですが、回答頂いているような DataGridをスクロールする際に、「戻ってきた」事を捕捉する事ができるものなのでしょうか。 お手数おかけして申し訳ございませんが、宜しくお願い致します。