¿Cómo crear una ventana personalizada de cromo en wpf?

¿Cómo puedo crear una ventana personalizada básica de cromo para una ventana de WPF, que no incluye el botón de cerrar y sigue siendo una ventana movible y redimensionable?

.NET 4.5 agregó una nueva clase que simplifica enormemente esto.

La clase WindowChrome le permite ampliar el contenido de Windows Presentation Foundation (WPF) en el área no cliente de una ventana que normalmente está reservada para el administrador de ventanas del sistema operativo.

Puedes encontrar un tutorial aquí .

Y aquí hay un breve ejemplo de uso .

Acabo de utilizar el ejemplo a continuación para .net 4.5 y funciona muy bien. Curiosamente, utiliza un código detrás de un diccionario de recursos para los eventos de clic. Todo lo que tiene que hacer es hacer referencia al diccionario de recursos en su archivo app.xaml y luego asignarle a Window the Style CustomWindowStyle . Esto fue robado sin vergüenza de http://www.eidias.com/blog/2014/1/27/restyle-your-window .

    

Y para el código detrás:

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace WpfApp7 { public partial class WindowStyle : ResourceDictionary { public WindowStyle() { InitializeComponent(); } private void CloseClick(object sender, RoutedEventArgs e) { var window = (Window)((FrameworkElement)sender).TemplatedParent; window.Close(); } private void MaximizeRestoreClick(object sender, RoutedEventArgs e) { var window = (Window)((FrameworkElement)sender).TemplatedParent; if (window.WindowState == System.Windows.WindowState.Normal) { window.WindowState = System.Windows.WindowState.Maximized; } else { window.WindowState = System.Windows.WindowState.Normal; } } private void MinimizeClick(object sender, RoutedEventArgs e) { var window = (Window)((FrameworkElement)sender).TemplatedParent; window.WindowState = System.Windows.WindowState.Minimized; } private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Hello!"); } } }