用于某些设备的UWP中的XAML渐变问题

我在我的应用程序中使用Page作为登陆屏幕。 XAML看起来像这样:

 <Grid x:Name="LayoutRoot"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="3*"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="7*"/> </Grid.RowDefinitions> <Rectangle StrokeThickness="0" Fill="#FF79D2F4" Margin="0,0,0,-10" Grid.RowSpan="2"/> <Rectangle StrokeThickness="0" Fill="#FF1F8CC5" Margin="0,-10,0,0" Grid.Row="2" Grid.RowSpan="2"/> <Image Source="ms-appx:///Assets/ViewMedia/Banners/Banner_Light_Big.jpg" Grid.Row="1" Grid.RowSpan="2"/> <Rectangle StrokeThickness="0" Grid.Row="2" Grid.RowSpan="2"> <Rectangle.Fill> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Offset="0"/> <GradientStop Color="#7F000000" Offset="1"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> </Grid> <StackPanel MaxWidth="300" Margin="20,35" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"> <Button x:Name="LoginButton" x:Uid="LoginButton" Style="{StaticResource BrandButtonStyle}" Margin="0,5" Click="LoginButton_Click"/> <Button x:Name="RegisterButton" x:Uid="RegisterButton" Style="{StaticResource BrandButtonStyle}" Margin="0,5" Click="RegisterButton_Click"/> </StackPanel> </Grid> 

我有3个设备在运行应用程序:

  • 微软Lumia 950 XL [ M ]
  • 自定义构buildPC [ PC ]
  • 联想ThinkPad Tablet 2 [ T ]

当运行应用程序时,这个页面在MPC上呈现得很好,但是T Gradient和底部的两个Button根本没有渲染。 我没有看到他们,但我可以按下Button ,他们的自来水事件的打击者将罢工。 但是,如果我用渐变评论Rectangle ,所有设备上的一切都很好。

这是使用渐变时,应用程序看起来如何。 没有button。 而渐变也是不可见的。 随着渐变

这是如何应用程序看起来没有梯度的T。 button到位。 没有梯度

这就是它应该如何运行在PC上 。 button和渐变是可见的。 这是它应该看起来

运行应用程序时,在输出中看不到任何错误。 我不知道为什么这只发生在特定的设备上。 也许这是一个已知的问题?

更新1

从用户的反馈,我可以说这个bug只碰到Atom驱动的设备。 但我不确定这是否对所有Atom供电的设备都是100%的。

更新2

我从内幕预览快速戒指W10更新T. 错误到位。 所以这没有连接到操作系统版本。

更新3

开关ButtonStyle恢复正常并不能解决这个问题。 所以Style是好的,这不是原因。

尝试从Rectangle删除Grid.RowSpan="2" (或者添加一个RowDefinition ),你有4行(4 RowDefinition ),但是使用Grid.RowSpan=2Rectangle会添加5行,所以可能会导致你麻烦了。

编辑:我不好, Rectangle实际上跨越第2和第3行( Grid.Row="2" ),所以没关系。

由于您只是在<Grid>堆叠<StackPanel> (没有什么奇特的),所以您可以尝试用<Canvas x:Name="LayoutRoot">replace根布局<Grid x:Name="LayoutRoot"> <Canvas x:Name="LayoutRoot">并查看如果这有所作为。