Я работаю над приложением WPF с WindowStyle="None"
Итак, я объединил свой заголовок, меню и кнопку «Свернуть, развернуть, закрыть» в сетке.
Как-то так
В XAML:
<Grid x:Name="TitleBar" Height="35" MouseLeftButtonDown="MouseLeftButtonDown">
<Menu Height="35">
<MenuItem>
......
</MenuItem>
</Menu>
<Button x:Name="Minimize"/> <!--These buttons are for demonstration, real one are set accordingly-->
<Button x:Name="Maximize"/>
<Button x:Name="Close"/>
</Grid>
В C#
private void TitleBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2 && WindowState == WindowState.Maximized)
{
SystemCommands.RestoreWindow(this);
}
else if (e.ClickCount == 2 && WindowState == WindowState.Normal)
{
SystemCommands.MaximizeWindow(this);
}
}
Проблемы:
Когда окно развернуто и откройте одно из меню, щелкнув по нему одно, и сделайте еще один щелчок в любом месте на панели заголовков, оно регистрируется, как я дважды щелкнул для минимизации / максимизации. Этого не происходит, когда он находится в нормальном состоянии. Короче говоря, как я могу зарегистрировать свой клик только в элементе меню и не позволить этой сетке за меню регистрировать этот клик для себя
Если щелкнуть мышью в нижней части пункта меню, она не регистрируется или становится глючной