I try to make the ToggleButton work correctly. When I click, I open the window, when I click on another area of ​​the form (or when I select options), the menu actually closes, but if I press the button again, it does nothing, that is, it does not display the context menu, and then ( pressing it again displays it again.

What should I do so that when I use it again, the button will display my menu again?

Xaml code

<ToggleButton Width="99" Height="78" Margin="58,-3,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Checked="bnetbutton_Click" Style="{StaticResource NewBnetBtnStyle}"> <ToggleButton.ContextMenu> <ContextMenu Margin="10,10,10,10" Style="{StaticResource Cm}"> <MenuItem x:Name="accountMenu" Click="LkButton_OnClick" FontFamily="/Launcher;component/Resources/#Blizzard" FontSize="13" Header="Управление учетной записью" Style="{StaticResource MenuItem}"> <MenuItem.Template> <ControlTemplate TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="True"> <Rectangle x:Name="Bg" Fill="{TemplateBinding Background}" RadiusX="2" RadiusY="2" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" MinWidth="24" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="30" /> </Grid.ColumnDefinitions> <ContentPresenter x:Name="Icon" Margin="1" VerticalAlignment="Center" Content="{TemplateBinding Icon}" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <ContentPresenter Grid.Column="2" Margin="{TemplateBinding Padding}" Content="{TemplateBinding Header}" ContentSource="Header" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentTemplate="{TemplateBinding HeaderTemplate}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Grid> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsHighlighted" Value="True"> <Setter TargetName="Bg" Property="Fill" Value="#FF323945" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </MenuItem.Template> <MenuItem.Icon> <Image Width="16" Height="16" Source="/Launcher;component/Resources/icon_manage_character_on.png" /> </MenuItem.Icon> </MenuItem> <MenuItem x:Name="supportMenu" Click="ForumButton_OnClick" FontFamily="/Launcher;component/Resources/#Blizzard" FontSize="13" Header="Служба поддержки" Style="{StaticResource MenuItem}"> <MenuItem.Template> <ControlTemplate TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="True"> <Rectangle x:Name="Bg" Fill="{TemplateBinding Background}" RadiusX="2" RadiusY="2" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" MinWidth="24" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="30" /> </Grid.ColumnDefinitions> <ContentPresenter x:Name="Icon" Margin="1" VerticalAlignment="Center" Content="{TemplateBinding Icon}" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <ContentPresenter Grid.Column="2" Margin="{TemplateBinding Padding}" Content="{TemplateBinding Header}" ContentSource="Header" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentTemplate="{TemplateBinding HeaderTemplate}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Grid> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsHighlighted" Value="True"> <Setter TargetName="Bg" Property="Fill" Value="#FF323945" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </MenuItem.Template> <MenuItem.Icon> <Image Width="16" Height="16" Source="/Launcher;component/Resources/icon_menuSupport_on.png" /> </MenuItem.Icon> </MenuItem> <MenuItem x:Name="settingsMenu" Click="SettinsButton_Click" FontFamily="/Launcher;component/Resources/#Blizzard" FontSize="13" Header="Настройки" Style="{StaticResource MenuItem}"> <MenuItem.Template> <ControlTemplate TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="True"> <Rectangle x:Name="Bg" Fill="{TemplateBinding Background}" RadiusX="2" RadiusY="2" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" MinWidth="24" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="30" /> </Grid.ColumnDefinitions> <ContentPresenter x:Name="Icon" Margin="1" VerticalAlignment="Center" Content="{TemplateBinding Icon}" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <ContentPresenter Grid.Column="2" Margin="{TemplateBinding Padding}" Content="{TemplateBinding Header}" ContentSource="Header" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentTemplate="{TemplateBinding HeaderTemplate}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Grid> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsHighlighted" Value="True"> <Setter TargetName="Bg" Property="Fill" Value="#FF323945" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </MenuItem.Template> <MenuItem.Icon> <Image Width="16" Height="16" Source="/Launcher;component/Resources/icon_menuSettings_on.png" /> </MenuItem.Icon> </MenuItem> <Separator /> <MenuItem x:Name="reloginMenu" Click="MenuItem_Click" FontFamily="/Launcher;component/Resources/#Blizzard" FontSize="13" Header="Сменить пользователя" Style="{StaticResource MenuItem}"> <MenuItem.Template> <ControlTemplate TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="True"> <Rectangle x:Name="Bg" Fill="{TemplateBinding Background}" RadiusX="2" RadiusY="2" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" MinWidth="24" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="30" /> </Grid.ColumnDefinitions> <ContentPresenter x:Name="Icon" Margin="1" VerticalAlignment="Center" Content="{TemplateBinding Icon}" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <ContentPresenter Grid.Column="2" Margin="{TemplateBinding Padding}" Content="{TemplateBinding Header}" ContentSource="Header" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentTemplate="{TemplateBinding HeaderTemplate}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Grid> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsHighlighted" Value="True"> <Setter TargetName="Bg" Property="Fill" Value="#FF323945" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </MenuItem.Template> <MenuItem.Icon> <Image Width="16" Height="16" Source="/Launcher;component/Resources/icon_menusignout_on.png" /> </MenuItem.Icon> </MenuItem> <!-- Template="{StaticResource contextMenuItemTemplate}" --> <MenuItem x:Name="exitMenu" Click="MenuItem_Click_1" FontFamily="/Launcher;component/Resources/#Blizzard" FontSize="13" Header="Выход" Style="{StaticResource MenuItem}"> <MenuItem.Template> <ControlTemplate TargetType="{x:Type MenuItem}"> <Grid SnapsToDevicePixels="True"> <Rectangle x:Name="Bg" Fill="{TemplateBinding Background}" RadiusX="2" RadiusY="2" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="1" /> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" MinWidth="24" SharedSizeGroup="MenuItemIconColumnGroup" /> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="30" /> </Grid.ColumnDefinitions> <ContentPresenter x:Name="Icon" Margin="1" VerticalAlignment="Center" Content="{TemplateBinding Icon}" ContentSource="Icon" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> <ContentPresenter Grid.Column="2" Margin="{TemplateBinding Padding}" Content="{TemplateBinding Header}" ContentSource="Header" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentTemplate="{TemplateBinding HeaderTemplate}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> </Grid> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsHighlighted" Value="True"> <Setter TargetName="Bg" Property="Fill" Value="#FF323945" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </MenuItem.Template> <MenuItem.Icon> <Image Width="16" Height="16" Source="/Launcher;component/Resources/icon_menuExit_on.png" /> </MenuItem.Icon> </MenuItem> </ContextMenu> </ToggleButton.ContextMenu> </ToggleButton> 

C # code

 private void bnetbutton_Click(object sender, RoutedEventArgs e) { (sender as ToggleButton).ContextMenu.IsEnabled = true; (sender as ToggleButton).ContextMenu.PlacementTarget = (sender as ToggleButton); (sender as ToggleButton).ContextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom; (sender as ToggleButton).ContextMenu.IsOpen = true; } 

    1 answer 1

    This happens because you are subscribed to the Checked event at the ToggleButton, which is triggered by the first click of a button. At the second, Unchecked is triggered. And so on the circle. Depending on your situation, you can solve the problem in one of the following ways:

    1. Sign the same procedure (bnetbutton_Click) on the Unchecked event.
    2. Or, instead of Checked and Unchecked events, subscribe to the Click event that is triggered with each click.