Я хотел иметь настраиваемое окно, поэтому следовал нескольким руководствам, которые позволяют это сделать, установив для стиля окна значение none, а затем самостоятельно добавив кнопки заголовка / восстановления / минимизации / закрытия. Минимизация достигается простой обработкой события щелчка и установкой состояния окна в минимизированное, но при этом не отображается анимация минимизации, которую вы видите в Windows 7, а просто мгновенно скрывает окно, что очень странно при использовании с другими окнами. которые действительно оживляют, так как вы чувствуете, что приложение закрывается.
Итак, есть ли способ включить эту анимацию? .. кажется, что он отключен, когда вы меняете WindowStyle на none.
Изменить: тестовый код
public partial class MainWindow : Window
{
public MainWindow()
{
WindowStyle = WindowStyle.None;
InitializeComponent();
}
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
// this doesnt seem to animate
SendMessage(new WindowInteropHelper(this).Handle, 0x0112, (IntPtr)0xF020, IntPtr.Zero);
}
protected override void OnMouseRightButtonDown(MouseButtonEventArgs e)
{
base.OnMouseRightButtonDown(e);
WindowStyle = WindowStyle.SingleBorderWindow;
WindowState = WindowState.Minimized;
}
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new Action(() => WindowStyle = WindowStyle.None));
}
}