【发布时间】:2015-08-10 14:32:32
【问题描述】:
我刚刚注意到这个问题,每当我选择一个其父级为复选框的扩展器时,即使未选中该复选框,它也会触发选中/未选中事件。
这是一个显示它发生的 .gif。右上角的数字代表选中的复选框的数量,我设置为在选中或取消选中复选框时向上和向下计数。计数器本身并不是这里的担心,只是一种显示它发生的方式。
对于每个复选框,它们的 Checked 和 UnChecked 事件指向我选择的方法。
是什么导致了这种情况发生,我该如何预防?
编辑:XAML
<Expander Loaded="VerifyExpanderLoaded" ExpandDirection="Down" IsExpanded="True" FontSize="14" FontWeight="Bold" Margin="5" BorderThickness="1" BorderBrush="#FF3E3D3D">
<Expander.Header>
<DockPanel RenderTransformOrigin="0.5,0.5" LastChildFill="False" Margin="0" HorizontalAlignment="Stretch">
<TextBlock Text="Verify Caller and Account" DockPanel.Dock="Left" VerticalAlignment="Center" Margin="0"/>
<Button DockPanel.Dock="Right" Margin="1,0" Click="VerifyUncheckAll">
<TextBlock Text="Uncheck All" Margin="1,0" FontSize="12" FontWeight="Normal"/>
</Button>
<Button DockPanel.Dock="Right" Margin="1,0" Click="VerifyCheckAll">
<TextBlock Text="Check All" FontSize="12" FontWeight="Normal" Margin="1,0"/>
</Button>
<TextBlock x:Name="VerifyCheckboxCount" Text="0/0" DockPanel.Dock="Right" VerticalAlignment="Center" FontSize="16" FontWeight="Bold" Margin="0,0,10,0"/>
</DockPanel>
</Expander.Header>
<ListBox Background="{x:Null}" BorderBrush="{x:Null}">
<CheckBox x:Name="Authentication_CallerName_Checkbox" HorizontalAlignment="Center" Margin="10,5,0,0" Grid.ColumnSpan="2" FontSize="12" VerticalAlignment="Center" Checked="VerifyCheckBoxChecked" Unchecked="VerifyCheckBoxChecked">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="Caller's Name" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="14"/>
<StackPanel>
<Expander ExpandDirection="Right" Margin="5,2,0,0" VerticalAlignment="Bottom" HorizontalAlignment="Right" FontSize="14">
<TextBlock Text="Obtain Callers Name " HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center" FontWeight="Normal" FontStyle="Italic">
<Hyperlink x:Name="AuthenticationWikiLink" NavigateUri="[Redacted]" RequestNavigate="ExternalLinks">
Link
</Hyperlink>
</TextBlock>
</Expander>
</StackPanel>
</StackPanel>
</CheckBox>
【问题讨论】:
-
可以给我们一些代码吗?将复选框放在扩展器中时存在绑定问题...
-
为什么需要防止它发生?它会导致什么问题?
-
在 XAML 中添加。大卫,因为它导致计数器在事件触发时根据其 IsChecked 属性将复选框计数为选中或未选中。我知道有一些方法可以解决这个问题,我可以使用其他方法来确定它是否被检查。然而,这超出了这个问题的范围。
-
我也可以为复选框的父级提供代码吗,似乎它也是一个扩展器..
-
我认为这是因为您将扩展器作为复选框的 content 的一部分,因此复选框内容中的任何点击事件(例如扩展扩展器)也会影响复选框事件。尝试先放置一个带有复选框的水平堆栈面板,然后将扩展器作为单独的项目。
标签: wpf xaml events checkbox expander