【问题标题】:Set inactive color for customized titlebar为自定义标题栏设置非活动颜色
【发布时间】:2017-01-12 04:52:18
【问题描述】:

我跟着uwp titlebar sample,除了一件事,它工作正常,标题栏的颜色总是一样的,但是当窗口不在前台时应该是不同的,我尝试使用LayoutMetricsChangedIsVisibleChanged 监听散焦事件但它不起作用,那么如何设置新条的不同颜色并使其像真实的一样?

【问题讨论】:

  • 检查应用程序是否有焦点可以看这里:stackoverflow.com/questions/34857990/…
  • InactiveBackgroundColor 指定窗口不是前景时的标题栏颜色。
  • @RaymondChen 可以,但是自定义的titlebar是UIelement,不是Applicationviewtitlebar,所以没有这样的设置。
  • 啊,我误解了这个问题。您有一个自定义绘制的标题栏(不仅仅是自定义颜色的标题栏)。您可以要求 UISettings.UIElementColor(InactiveCaption) 找出非活动标题颜色是什么。您可以在窗口激活状态更改时更改颜色。 IsVisibleChanged 告诉您何时显示/隐藏您的自定义标题栏。 (例如,用户将应用设为全屏,因此隐藏了标题栏。然后用户将鼠标撞到屏幕顶部,标题栏暂时重新显示。)
  • @RaymondChen UISettings.UIElementColor 是我正在寻找的一部分,谢谢。那么有没有办法让 UIElement 像标题栏一样自己设置颜色呢?我以为Window.SetTitleBar 会这样做。除此之外,看起来总共有 12 种颜色(msdn.microsoft.com/en-us/library/windows/apps/…)我需要注意以使标题栏像系统一样真实,其中一些不在UIElementColor Enum 中。

标签: c# uwp titlebar


【解决方案1】:

查看这篇文章:Eternal Coding - Take the control of your titlebar

您必须处理事件Window.Current.Activated。例如,这里是从同一篇文章中提取的代码:

private void Current_Activated(object sender, WindowActivatedEventArgs e)
{
    if (e.WindowActivationState != CoreWindowActivationState.Deactivated)
    {
        BackButtonGrid.Visibility = Visibility.Visible;
        MainTitleBar.Opacity = 1;
    }
    else
    {
        BackButtonGrid.Visibility = Visibility.Collapsed;
        MainTitleBar.Opacity = 0.5;
    }
}

当窗口获得或失去焦点时,此 sn-p 将更新其自定义标题栏的不透明度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    相关资源
    最近更新 更多