Как создать пользовательский хром в wpf?
Как я могу создать базовый пользовательский оконный хром для windows WPF, который не включает кнопку закрытия и все еще перемещаемое и изменяемое по размеру окно?
- Как создать постоянную полноэкранную активность наложения в Android
- Как предотвратить закрытие windows браузера?
- Создание таблицы и диалога мастер-деталировки, как повторно использовать один и тот же диалог для создания и редактирования
- Диалоговое окно JQuery UI не размещено на центральном экране
- Приложение WPF не закрывается при закрытии главного windows
- Как создать дочерние windows с Python tkinter?
- Powershell: всегда генерируется нулевой файл (вывод Compare-Object)
- Минимизация всех открытых окон в C #
Вы устанавливаете 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!"); } } }