private void SetDragRegionForCustomTitleBar(AppWindow appWindow) { //Infer titlebar height int titleBarHeight = appWindow.TitleBar.Height; MyTitleBar.Height = titleBarHeight; // Get caption button occlusion information // Use LeftInset if you've explicitly set your window layout to RTL or if app language is a RTL language int CaptionButtonOcclusionWidth = appWindow.TitleBar.RightInset; // Define your drag Regions int windowIconWidthAndPadding = MyWindowIcon.Width + MyWindowIcon.Margin.Right; int dragRegionWidth = appWindow.Size.Width - (CaptionButtonOcclusionWidth + windowIconWidthAndPadding); Windows.Graphics.RectInt32[] dragRects = new Windows.Graphics.RectInt32[] { }; Windows.Graphics.RectInt32 dragRect; dragRect.X = windowIconWidthAndPadding; dragRect.Y = 0; dragRect.Height = titleBarHeight; dragRect.Width = dragRegionWidth; appWindow.TitleBar.SetDragRectangles(dragRects.Append(dragRect).ToArray()); }
private void TitlebarCustomBtn_Click(object sender, RoutedEventArgs e) { _mainAppWindow.TitleBar.ExtendsContentIntoTitleBar = !_mainAppWindow.TitleBar.ExtendsContentIntoTitleBar; // Check to see if customization is supported. Currently only supported on Windows 11. if (AppWindowTitleBar.IsCustomizationSupported() && _mainAppWindow.TitleBar.ExtendsContentIntoTitleBar) { // Show the custom titlebar _mainWindow.MyTitleBar.Visibility = Visibility.Visible; // Set Button colors to match the custom titlebar _mainAppWindow.TitleBar.ButtonBackgroundColor = Colors.Blue; _mainAppWindow.TitleBar.ButtonForegroundColor = Colors.White; _mainAppWindow.TitleBar.ButtonInactiveBackgroundColor = Colors.Blue; _mainAppWindow.TitleBar.ButtonInactiveForegroundColor = Colors.White; _mainAppWindow.TitleBar.ButtonHoverBackgroundColor = Colors.Green; _mainAppWindow.TitleBar.ButtonHoverForegroundColor = Colors.White; _mainAppWindow.TitleBar.ButtonPressedBackgroundColor = Colors.Green; _mainAppWindow.TitleBar.ButtonPressedForegroundColor = Colors.White; //Infer titlebar height int titleBarHeight = _mainAppWindow.TitleBar.Height; _mainWindow.MyTitleBar.Height = titleBarHeight; // Get caption button occlusion information // Use LeftInset if you've explicitly set your window layout to RTL or if app language is a RTL language int CaptionButtonOcclusionWidth = _mainAppWindow.TitleBar.RightInset; // Define your drag Regions int windowIconWidthAndPadding = (int)_mainWindow.MyWindowIcon.ActualWidth + (int)_mainWindow.MyWindowIcon.Margin.Right; int dragRegionWidth = _mainAppWindow.Size.Width - (CaptionButtonOcclusionWidth + windowIconWidthAndPadding); Windows.Graphics.RectInt32[] dragRects = new Windows.Graphics.RectInt32[] { }; Windows.Graphics.RectInt32 dragRect; dragRect.X = windowIconWidthAndPadding; dragRect.Y = 0; dragRect.Height = titleBarHeight; dragRect.Width = dragRegionWidth; var dragRectsArray = dragRects.Append(dragRect).ToArray(); _mainAppWindow.TitleBar.SetDragRectangles(dragRectsArray); } else { // Bring back the default titlebar _mainWindow.MyTitleBar.Visibility = Visibility.Collapsed; _mainAppWindow.TitleBar.ResetToDefault(); } }