CheckBox.Content
是一个ToggleButton
和一个Popup
。当ToggleButton
is时Checked
,Popup显示。在Popup
中,存在三个元素。如果我单击一个元素,则Popup
应该关闭。
重现问题的步骤:
- 单击黑色椭圆,弹出窗口将显示
- 单击红色、绿色或蓝色椭圆,弹出窗口不关闭(弹出窗口预计会关闭)。
这是我的代码。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<CheckBox>
<DockPanel Panel.ZIndex="2" HorizontalAlignment="Right">
<Popup Name="facePopup" DockPanel.Dock="Bottom" StaysOpen="True" AllowsTransparency="True"
Placement="Bottom" VerticalOffset="1"
IsOpen="{Binding Path=IsChecked, ElementName=roleFaceButton}" MouseUp="facePopup_MouseUp" >
<StackPanel>
<Ellipse Fill="Red" Width="18" Height="25"/>
<Ellipse Fill="Green" Width="18" Height="25"/>
<Ellipse Fill="Blue" Width="18" Height="25"/>
</StackPanel>
</Popup>
<ToggleButton x:Name="roleFaceButton">
<Ellipse Fill="Black" Width="18" Height="25"/>
</ToggleButton>
</DockPanel>
</CheckBox>
</Window>
和代码隐藏
private void facePopup_MouseUp(object sender, MouseButtonEventArgs e)
{
facePopup.IsOpen = false;
}
我发现如果我CheckBox
用Border代替,我的代码就可以工作。为什么?