初投稿なのでお手柔らかに。別のページ (これは WPF プロジェクトのナビゲーション フォームの一部です) からチェックボックスの値を取得しようとしていますが、ページが変更されるとすぐに値が常に false にリセットされます。IsChecked 値を適切にバインドするにはどうすればよいですか? 私は WPF を使い始めたばかりなので、テンプレートは非常に基本的なものです。これを行うためのより良い方法があれば、それを受け入れます。
また、コードビハインドページは、それが役割を果たす場合、c#ではなくvb.netです。
スタイルは次のように呼び出されます。
<CheckBox Content="Photo" x:Name="OT_Photo" Grid.Row="0" Grid.Column="0" Style="{StaticResource ElementCheckbox}" />
これらのページには数百のチェックボックスがあるため、それぞれの変数を避けたいと思います。
スタイルは「Application.xaml」にあります
<Style TargetType="CheckBox" x:Key="ElementCheckbox">
<Setter Property="IsThreeState" Value="True" />
<Setter Property="IsChecked" Value="{Binding IsChecked ,Mode=TwoWay}" />
<Setter Property="Foreground" Value="Navy" />
<Setter Property="FontSize" Value="14" />
<Setter Property="Margin" Value="15,4,0,4" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="MaxWidth" Value="500" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<DockPanel DockPanel.Dock="Left">
<Border x:Name="Border" CornerRadius="0" VerticalAlignment="Top">
<Image Height="20" Width="20" Name="CheckMark" />
</Border>
<TextBlock x:Name="CheckText" Text="{TemplateBinding Content}" Margin="5,0,0,0" FontSize="{TemplateBinding FontSize}" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" />
</DockPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="{x:Null}">
<Setter TargetName="CheckMark" Property="Source" Value="CheckBoxNull.png" />
</Trigger>
<Trigger Property="IsChecked" Value="false">
<Setter TargetName="CheckMark" Property="Source" Value="CheckBoxCross.png" />
</Trigger>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="CheckMark" Property="Source" Value="CheckBoxTick.png" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Effect" TargetName="Border">
<Setter.Value>
<DropShadowEffect ShadowDepth="1" Color="Blue" Opacity="1" BlurRadius="2"/>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Blue" TargetName="CheckText" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
事前に助けてくれてありがとう!
私はこれに1日以上立ち往生していることを追加する必要があります。テンプレートバインディング、バインディングパス、および既に見つけたc#の回答に基づいたクリック手順を試しました。ただし、常にチェックボックスがリセットされます。