Как настроить заголовок окна в проекте Windows App SDK (WIN UI/Project Reunion)?

Я пытаюсь создать приложение с помощью нового SDK для приложений Widows. Я использовал Windows Community Toolkit для создания приложения.

Посмотрев документацию , я попробовал это:

На первой странице, отображаемой моим приложением, я создал текстовый блок:

      <TextBlock Text="Hello" x:Name="CustomTitleBar" /> 

В коде этой страницы я добавил следующий код:

       private void Page_Loaded(object sender, RoutedEventArgs e)
 {
   App.MainWindow.ExtendsContentIntoTitleBar = true;
   App.MainWindow.SetTitleBar(CustomTitleBar);
   App.MainWindow.Activate();
 }

На странице XAML приложения я следовал указаниям документации, чтобы переопределить эти значения:

      <SolidColorBrush x:Key="WindowCaptionBackground">Green</SolidColorBrush>
<SolidColorBrush x:Key="WindowCaptionBackgroundDisabled">LightGreen</SolidColorBrush>
<SolidColorBrush x:Key="WindowCaptionForeground">Red</SolidColorBrush>
<SolidColorBrush x:Key="WindowCaptionForegroundDisabled">Pink</SolidColorBrush> 

Это заставляет исчезнуть заголовок по умолчанию. Однако у меня осталось только слово «Привет» без фона и кнопок:

Что-то мне не хватает?

1 ответ

Вы, вероятно, должны использовать AppWindowи ведущий (в моем случае я использовал OverlapedPresenter) классы. Вот некоторый код, который я использовал в своем приложении.

      public MainWindow()
{
   InitializeComponent();
   AppWindow appWindow = GetAppWindowForCurrentWindow();
   appWindow.TitleBar.ExtendsContentIntoTitleBar = false;
}

Затем прямо под конструктором я использую метод, который Microsoft предоставляет в этом примере:

      private AppWindow GetAppWindowForCurrentWindow()
{
   IntPtr hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
   WindowId myWndId = Win32Interop.GetWindowIdFromWindow(hWnd);
   return AppWindow.GetFromWindowId(myWndId);
}

я использую OverlappedPresenterclass, чтобы изменить некоторые вещи в окне, например, изменить его размер или нет.

Другие вопросы по тегам