C# 动态更改文本块的颜色

C# 动态更改文本块的颜色,c#,xaml,windows-8,windows-store-apps,C#,Xaml,Windows 8,Windows Store Apps,我有Windows 8应用程序,正在尝试为其创建登录视图。它仍然需要支持Windows8,因此集线器控制不可用。但看起来很相似。第一部分将包含较暗的图片,第二部分将包含几乎白色背景上类似GridView的元素。在滚动过程中,应用程序标题应保持不变 但结果是,我对标题文本块有一个问题。当它放置在图像上时,它应该是白色的,但在进一步滚动之后,它应该将文本部分的颜色反转到白色背景上 以下是一个示例标记: <Grid Background="{ThemeResource ApplicationPa

我有Windows 8应用程序,正在尝试为其创建登录视图。它仍然需要支持Windows8,因此集线器控制不可用。但看起来很相似。第一部分将包含较暗的图片,第二部分将包含几乎白色背景上类似GridView的元素。在滚动过程中,应用程序标题应保持不变

但结果是,我对标题文本块有一个问题。当它放置在图像上时,它应该是白色的,但在进一步滚动之后,它应该将文本部分的颜色反转到白色背景上

以下是一个示例标记:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ScrollViewer ZoomMode="Disabled" VerticalScrollMode="Disabled" 
                  VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">

        <StackPanel Orientation="Horizontal">
            <Rectangle Width="500" Fill="Purple"/>
            <Rectangle Width="5000" Height="500" VerticalAlignment="Center" Fill="LightCyan"/>
        </StackPanel>
    </ScrollViewer>

    <TextBlock Text="Application Name" Foreground="White"
               FontSize="32" FontFamily="Segoe UI" 
               FontWeight="Bold" Margin="48 24 0 0" 
               HorizontalAlignment="Left" VerticalAlignment="Top"/>

</Grid>


也许有人对如何实现它有想法?

我认为您的方法是不直观的,为了可读性,文本块下不应该有任何内容,即在网格中使用两行,第一行带有Height=“Auto”将包含文本,另一行带有Height=“*”将包含您的滚动查看器。其中一项要求是,标题应放置在图片上方,并在滚动过程中保持不变。实际上,在我给您的解决方案中,文本有自己的行,但按照您要求的方式,似乎有一种合理的方法,请参见:很遗憾,但我不是那个为应用程序指定UX的人。在我们的例子中,图片总是会调低到几乎相同的颜色。所以图片上的白色标题看起来很不错。但是我有一个问题,那就是在白色背景的另一个部分上滚动。你可以在绘制文本时使用笔划,但是YMMV,除了与UX设计师联系这个问题之外,他应该很清楚这些问题,毕竟他是一个设计师。我认为没有比我刚才给你的两种不同的解决方案更好的解决你的问题的方法了,也就是说,除非你接受一些妥协,否则没有任何解决方案能神奇地适用于所有情况。