CheckBox.Content
とToggleButton
一緒Popup
です。ToggleButton
がの場合Checked
、ポップアップが表示されます。にはPopup
、3 つの要素があります。1 つの要素をクリックすると、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;
}
BorderCheckBox
で置き換えると、コードが機能することがわかりました。なんで?