Я хотел иметь настраиваемое окно, а затем несколько учебных пособий, которые позволяют это, установив стиль окна в none, а затем самостоятельно добавив кнопки заголовка/восстановления/минимизации/закрытия. Сведение к минимуму достигается за счет простого обращения к событию кликов и сглаживания состояния окна, но это не показывает анимацию минимизации, которую вы видите в Windows 7, и просто скрывает окно, которое кажется очень странным при использовании с другими окнами которые ожидают, поскольку вы склонны чувствовать, что приложение закрывается.Пользовательский стиль окна с минимизацией анимации
Итак, есть ли способ разрешить эту анимацию? .. он кажется отключенным, когда вы меняете WindowStyle на none.
Edit: Код испытания
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));
}
}
Thankyou. Я смог получить второй подход к работе, но не первый. Первый пока не показывает анимацию. Я отредактировал мой пост с кодом Im using – pastillman
Я обновил свой ответ. Я был немного не прав. В обоих случаях вы заметите, что заголовок снова появляется, когда вы нажимаете кнопку. Но когда вы отправляете сообщение самостоятельно, окно всегда анимируется при минимизации. Если вы просто изменяете границу при нажатии кнопки, она не анимируется, когда вы сворачиваете ее с помощью панели задач. – Fayilt
Извините за то, что так поздно, так что думаю. На самом деле это не так заметно, пока у вас не будет очень сложного контента с лагиным рендерингом. – pastillman