Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP标题栏按钮设置为透明时为白色_C#_Xaml_Uwp - Fatal编程技术网

C# UWP标题栏按钮设置为透明时为白色

C# UWP标题栏按钮设置为透明时为白色,c#,xaml,uwp,C#,Xaml,Uwp,Windows10版本18362。不确定Windows是否有bug,正在寻找解决方案 我想我有一个有点复杂的问题,需要一个过程来重现。最终发生的是: 该应用程序使用系统标题栏(不是扩展到标题栏的视图),并且在我的机器上,系统设置为允许标题栏中的重音颜色被禁用。这就是为什么标题按钮是蓝色的(系统强调色),而实际的标题栏是黑色的。我所期望的,以及应该发生的(我将证明)是标题按钮(最小化、最大化、关闭)应该是黑色的,就像标题栏的其余部分一样 我试图解决这个问题的第一件事(当我第一次在实际应用程序中注

Windows10版本18362。不确定Windows是否有bug,正在寻找解决方案

我想我有一个有点复杂的问题,需要一个过程来重现。最终发生的是:

该应用程序使用系统标题栏(不是扩展到标题栏的视图),并且在我的机器上,系统设置为允许标题栏中的重音颜色被禁用。这就是为什么标题按钮是蓝色的(系统强调色),而实际的标题栏是黑色的。我所期望的,以及应该发生的(我将证明)是标题按钮(最小化、最大化、关闭)应该是黑色的,就像标题栏的其余部分一样

我试图解决这个问题的第一件事(当我第一次在实际应用程序中注意到这一点时)是将按钮的背景色设置为透明。情况就是这样:

全白!好的,现在来看一个可重复的例子

  • 创建一个新的UWP应用程序。我使用了C#,不确定这是否重要,但为了完整性,我建议您也这样做
  • 确保在“系统设置”的标题栏中禁用了强调色
  • 运行默认应用程序并注意标题栏的行为。这是预期的行为,因为标题按钮为黑色(黑色主题)。这就是为什么我相信我所经历的是意外的
  • 我在XAML页面中添加了丙烯酸效果,因为我认为这就是问题所在。似乎不是,但为了完整起见,请使用以下XAML和C#(当然,将App1更改为您的应用程序名称):

使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用System.Runtime.InteropServices.WindowsRuntime;
使用Windows.ApplicationModel.Core;
使用Windows基金会;
使用Windows。
使用Windows.UI;
使用Windows.UI.ViewManagement;
使用Windows.UI.Xaml;
使用Windows.UI.Xaml.Controls;
使用Windows.UI.Xaml.Controls.Primitives;
使用Windows.UI.Xaml.Data;
使用Windows.UI.Xaml.Input;
使用Windows.UI.Xaml.Media;
使用Windows.UI.Xaml.Navigation;
//空白页项模板被记录在https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
名称空间App1
{
/// 
///可以单独使用或在框架内导航到的空页。
/// 
公共密封部分类主页面:第页
{
公共主页()
{
this.InitializeComponent();
ApplicationViewTitleBar formattableTitleBar=ApplicationView.GetForCurrentView().TitleBar;
CoreApplication.GetCurrentView().TitleBar.ExtendViewToTitleBar=false;
formattableTitleBar.ButtonBackgroundColor=颜色。透明;
formattableTitleBar.ButtonInactiveBackgroundColor=颜色。透明;
}
}
}
你现在应该看到我的第二个截图。如果您注释掉
MainPage.xaml.cs
中为透明指定按钮颜色的两行,您将看到我在第一个屏幕截图中看到的内容


我错过什么了吗?这是预期的行为吗?如何使标题按钮始终遵循规则?

我理解您的问题,这种行为确实令人困惑

标题栏有一个颜色层,与我们穿的衣服相似。你可以随意改变衣服的颜色,但你不能改变人的颜色

标题栏本身是白色的。将
按钮BackgroundColor
设置为透明时,颜色层实际上设置为透明,显示标题栏的原始颜色


由于您当前是一个黑色主题,
buttonFourgroundColor
为白色,这会导致您看到白色背景和白色文本。如果您将标题栏的
标题颜色设置为
透明
,您就会明白为什么
标题栏
有一个颜色层。

我想,但为什么在注释透明度时,它会在第三个“阶段”变成强调色?这才是真正让我相信这是一个问题,不是正常的。如果在系统设置中禁用了强调色,则不应显示该颜色。您可以在卸载应用程序后尝试重新部署。您在第二阶段对标题栏所做的更改将影响下一阶段的测试结果。