用于某些设备的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 ]
当运行应用程序时,这个页面在M和PC上呈现得很好,但是T Gradient
和底部的两个Button
根本没有渲染。 我没有看到他们,但我可以按下Button
,他们的自来水事件的打击者将罢工。 但是,如果我用渐变评论Rectangle
,所有设备上的一切都很好。
这是使用渐变时,应用程序看起来如何。 没有button。 而渐变也是不可见的。
这是如何应用程序看起来没有梯度的T。 button到位。
这就是它应该如何运行在PC上 。 button和渐变是可见的。
运行应用程序时,在输出中看不到任何错误。 我不知道为什么这只发生在特定的设备上。 也许这是一个已知的问题?
更新1
从用户的反馈,我可以说这个bug只碰到Atom驱动的设备。 但我不确定这是否对所有Atom供电的设备都是100%的。
更新2
我从内幕预览快速戒指W10更新T. 错误到位。 所以这没有连接到操作系统版本。
更新3
开关Button
的Style
恢复正常并不能解决这个问题。 所以Style
是好的,这不是原因。
尝试从Rectangle
删除Grid.RowSpan="2"
(或者添加一个RowDefinition
),你有4行(4 RowDefinition
),但是使用Grid.RowSpan=2
的Rectangle
会添加5行,所以可能会导致你麻烦了。
编辑:我不好, Rectangle
实际上跨越第2和第3行( Grid.Row="2"
),所以没关系。
由于您只是在<Grid>
堆叠<StackPanel>
(没有什么奇特的),所以您可以尝试用<Canvas x:Name="LayoutRoot">
replace根布局<Grid x:Name="LayoutRoot">
<Canvas x:Name="LayoutRoot">
并查看如果这有所作为。