寻找一点见解。
我有一个我设置为样式的复选框,因为我需要使实际的框与文本大小和位置匹配。样式代码如下:
Style TargetType="{x:Type CheckBox}" x:Key="recogCheckbox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<CheckBox Margin="130,4,0,0"/>
<BulletDecorator Name="customBullet" Margin="2,0,0,0" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center">
<TextBlock Width="100" TextWrapping="Wrap" HorizontalAlignment="Left" Foreground="White" Margin="5,0,0,0" Text="Recognition Call"/>
</BulletDecorator>
<ContentPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
复选框的xaml代码为:
<CheckBox FontFamily="Microsoft Sans Serif" FontSize="12" FontWeight="Bold" Height="20" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="717,193,0,0"
Name="recognitionCheckBox" Style="{StaticResource recogCheckbox}" VerticalAlignment="Top" Width="384" >
</CheckBox>
我正在尝试在我的应用程序上使用清除按钮,以便取消选中复选框,但是当我引用复选框名称&#39; recognitionCheckBox&#39;通过使用recognitionCheckBox.isChecked = false
,它不会取消选中我认为的复选框,因为实际的框位于我无法在后面的C#代码中引用的样式内。
有没有人知道取消选中样式中的复选框的方法。我一直在搜索几个网站,但找不到任何帮助过我的网站。
答案 0 :(得分:0)
从这里开始:https://msdn.microsoft.com/en-us/library/ms752319(v=vs.85).aspx在Stackpanel
之后在控件模板中添加以下内容 <ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="false">
<Setter TargetName="CheckMark" Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="CheckMark" Property="Visibility" Value="Visible" />
</ControlTemplate.Triggers>
答案 1 :(得分:0)
使用{TemplateBinding}将ControlTemplate中内部CheckBox的IsChecked属性绑定到CheckBox控件本身的IsChecked属性:
<Style TargetType="{x:Type CheckBox}" x:Key="recogCheckbox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" Margin="130,4,0,0"/>
<BulletDecorator Name="customBullet" Margin="2,0,0,0" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center">
<TextBlock Width="100" TextWrapping="Wrap" HorizontalAlignment="Left" Foreground="White" Margin="5,0,0,0" Text="Recognition Call"/>
</BulletDecorator>
<ContentPresenter/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
然后它将反映Checkbox控件的IsChecked属性的当前值。