UWP タイトルバーにコントロール配置する方法
タイトルバーにコントロールを表示する。
モダンなデスクトップアプリはタイトルバーにコントロールを配置する傾向がある。VisualStusio2019もタイトルバーに表示している。
下記のコードで、タイトルバーへコントロールを配置可能になる。
public MainPage()
{
this.InitializeComponent();
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
ApplicationView.GetForCurrentView().TitleBar.ButtonBackgroundColor = Windows.UI.Colors.Transparent;
ApplicationView.GetForCurrentView().TitleBar.ButtonInactiveBackgroundColor = Windows.UI.Colors.Transparent;
Window.Current.SetTitleBar(TitleBar);
CoreApplication.GetCurrentView().TitleBar.LayoutMetricsChanged += TitleBar_LayoutMetricsChanged;
}
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
コントロールの配置タイトルバーまで広げる。
ApplicationView.GetForCurrentView().TitleBar.ButtonBackgroundColor = Windows.UI.Colors.Transparent;
ウィンドウの右上のボタンの背景色を設定する。(ここでは透明)
ApplicationView.GetForCurrentView().TitleBar.ButtonInactiveBackgroundColor = Windows.UI.Colors.Transparent;
ウィンドウの右上のボタンの非アクティブ時の背景色を設定する。(ここでは透明)
これがないとアプリが非アクティブ状態のときこのように背景色を透明にしたつもりが、透明でなくなる。
Window.Current.SetTitleBar(TitleBar);
タイトルバーにフォーカスを受け取るコントロールがあるときは別途自作した任意のコントロールをタイトルバーに設定する必要がある。
CoreApplication.GetCurrentView().TitleBar.LayoutMetricsChanged
ウィンドウが表示されるときなどに発生するイベント。
タイトルバーのサイズなどの情報を持っている。
下記のようにイベントハンドラーを設定してサイズ情報を受け取る。
private void TitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args)
{
RightText.Margin = new Thickness(0, 0, sender.SystemOverlayRightInset, 0);
}
位置を調整しないと下の画像のように文字が閉じるボタンと被ったりする。
通常のデスクトップなどではあんまり感じないけど、タブレットなんかを考えるとタイトルバーがないほうが便利なのかも
Author And Source
この問題について(UWP タイトルバーにコントロール配置する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/Yuki4/items/5a055b895f42aab251fe著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .