Как создать пользовательский хром в wpf?

Как я могу создать базовый пользовательский оконный хром для windows WPF, который не включает кнопку закрытия и все еще перемещаемое и изменяемое по размеру окно?

Вы устанавливаете WindowStyle="None" Window WindowStyle="None" , а затем WindowStyle="None" свой собственный оконный интерфейс. Вам нужно создать собственные обработчики событий Min / Max / Close / Drag, но изменение размера сохраняется.

Например:

       Application Name     

И вот пример кода для общих функций windows

 ///  /// TitleBar_MouseDown - Drag if single-click, resize if double-click ///  private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e) { if(e.ChangedButton == MouseButton.Left) if (e.ClickCount == 2) { AdjustWindowSize(); } else { Application.Current.MainWindow.DragMove(); } } ///  /// CloseButton_Clicked ///  private void CloseButton_Click(object sender, RoutedEventArgs e) { Application.Current.Shutdown(); } ///  /// MaximizedButton_Clicked ///  private void MaximizeButton_Click(object sender, RoutedEventArgs e) { AdjustWindowSize(); } ///  /// Minimized Button_Clicked ///  private void MinimizeButton_Click(object sender, RoutedEventArgs e) { this.WindowState = WindowState.Minimized; } ///  /// Adjusts the WindowSize to correct parameters when Maximize button is clicked ///  private void AdjustWindowSize() { if (this.WindowState == WindowState.Maximized) { this.WindowState = WindowState.Normal; MaximizeButton.Content = "1"; } else { this.WindowState = WindowState.Maximized; MaximizeButton.Content = "2"; } } 

.NET 4.5 добавил новый class, который значительно упрощает это.

Класс WindowChrome позволяет вам расширить содержимое Windows Presentation Foundation (WPF) в неклиентской области windows, которое обычно резервируется для оконного менеджера операционной системы.

Здесь вы можете найти учебник .

И вот краткий пример использования .

Я только что использовал пример ниже для .net 4.5, и он работает очень хорошо. Интересно, что он использует код для словаря ресурсов для событий кликов. Все, что вам нужно сделать, это ссылку на словарь ресурсов в файле app.xaml а затем назначить Window Style CustomWindowStyle . Это было бесстыдно украдено с http://www.eidias.com/blog/2014/1/27/restyle-your-window .

    

И для кода позади:

 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!"); } } } 
  • Как получить и установить положение windows другого приложения в C #
  • Interesting Posts

    Как установить соединение по коммутируемому соединению автоматически после загрузки + загрузки 90 МБ данных в Windows?

    Существует ли неатомный эквивалент std :: shared_ptr? А почему нет в памяти ?

    Ссылка для добавления в календарь Google

    Огромный TIFF-файл боксирует вниз.

    Доступ к пути запрещается при использовании Directory.GetFiles (…)

    Javascript regex для проверки адреса IPv4 и IPv6, никаких имен хостов

    ViewPager перехватывает все события onTouch по оси x. Как отключить?

    Может ли провайдер по-прежнему видеть, какие URL-адреса посещают при использовании VPN?

    Привод DVD-RW не будет читать DVD-диски

    Как получить количество документов в коллекции с Cloud Firestore

    Перенос файлов PST Outlook 2010 в новое место

    Лучше ли использовать System.arraycopy (…), чем цикл for для копирования массивов?

    Что означают GC_FOR_MALLOC, GC_EXPLICIT и другие GC_ * в Android Logcat?

    Oozie: Launch Map-Reduce от Oozie action?

    Как исправить ошибку «процесс – это плохо» для Android-виджета?

    Давайте будем гением компьютера.