第一篇文章,所以请放轻松。我正在尝试从另一个页面获取复选框的值(这是 WPF 项目中导航表单的一部分),但是一旦页面发生更改,它总是将值重置为 false。如何让 IsChecked 值正确绑定?我正在学习刚刚开始使用 WPF,所以模板非常基础,如果有更好的方法可以做到这一点,那么我愿意接受。
如果要发挥作用,页面后面的代码也是 vb.net 而不是 c#。
样式调用如下:
<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>
在此先感谢您的帮助!
我应该补充一下,我已经坚持了一天多,我已经尝试了模板绑定、绑定路径和基于我已经找到的 c# 答案的点击过程。总是导致复选框被重置。