Silverlight 3 - Gradient作为背景问题 - Bug?

时间:2009-08-26 17:35:22

标签: c# silverlight gradient

尝试将Silverlight 3应用中的网格背景设置为渐变时出现问题。当我在我的应用程序中将网格的背景设置为渐变时,该渐变根本不会在浏览器中呈现。我已将此渐变画笔设置为resouce(在app.xaml以及本地XAML文件中),我也尝试直接对渐变画笔进行硬编码。我已经在VS和Expression Blend的XAML中手动进行了更改。

制作chane并在Blend中查看文件时,背景颜色会正确呈现。当背景设置为纯色(硬编码和资源)时,背景渲染在Expression和浏览器中都很好。这两件事都告诉我,这不是一个z-index问题,在所讨论的控件之上有一个控件呈现。

画笔的XAML是:

<LinearGradientBrush x:Key="TestBrush"
         EndPoint="0.5,1"
         StartPoint="0.5,0">
    <GradientStop Color="#8DFFFFFF"
            Offset="1" />
    <GradientStop Color="#E4FFFFFF" />
</LinearGradientBrush>

网格的XAML及其内容是:

<Grid Margin="1,0,0,0"
    Grid.Row="0"
    VerticalAlignment="Top"
    Height="49" Background="{StaticResource TestBrush}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <StackPanel Orientation="Horizontal"
            Margin="0"
            Grid.Column="0"
            Grid.Row="0">
        <TextBlock Margin="0.125,1.5,1,1.5"
             VerticalAlignment="Center">Code:</TextBlock>
        <TextBox x:Name="SearchCodeTextBox"
             Padding="1,0,0,0"
             Margin="1,1.5,0,1.5"
             Width="44"
             Text="{Binding Mode=TwoWay, Path=CurrentTabularViewModel.SearchCode}"
             TextWrapping="Wrap"
             KeyUp="SearchCodeTextBox_KeyUp" />
        <StackPanel Margin="2,0"                                        
            Height="20" 
            Background="{StaticResource CP_Blue2}">
            <TextBlock MinWidth="200" />
        </StackPanel>
        <Button Margin="10,1,0,1"
            Content="Add Code"
            Height="20" />
    </StackPanel>
    <StackPanel Orientation="Horizontal"
            Margin="35,0,0,0"
            Grid.Row="1"
            Grid.Column="0">
        <Button Margin="0"
            Width="24"
            Content="<"
            Height="20"
            VerticalContentAlignment="Top" />
        <Button Margin="2,0"
            Content="Tabular"
            Height="20"
            Width="Auto"
            HorizontalAlignment="Stretch"
            commands:Click.Command="{Binding Path=CurrentTabularViewModel.SearchCommand}"
            commands:Click.CommandParameter="{Binding Path=SelectedSessionType}" />
        <Button Content=">"
            Width="24"
            Margin="2,0"
            Height="20" />
        <Button Content="Instructional Notes"
            Width="Auto"
            Margin="30,0,2,0"
            Height="20" />
    </StackPanel>
</Grid>

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

好的,所以这是交易。这不是一个bug,至少不是Silverlight的一部分!这是开发人员的一个错误!

如果仔细观察资源中使用的渐变,只会改变前两个十六进制值(见下文)。当然,这是Alpha通道,以及随后的所有Fs,我实际上只是从一个透明层到另一个透明层。

<LinearGradientBrush x:Key="TestBrush"
         EndPoint="0.5,1"
         StartPoint="0.5,0">
    <GradientStop Color="#8DFFFFFF"
                Offset="1" />
    <GradientStop Color="#E4FFFFFF" />
</LinearGradientBrush>

现在,因为这是一个被注入较大页面的组件,后台由较大的页面设置。所以在Blend中,背景是BLEND的背景,这是一种灰色,这使整个事物看起来像Blend中的灰色渐变,但它只是白色,具有不同的透明度。当控件注入具有白色背景的主页面时,您无法看到它。

那么,这个故事的寓意是什么?注意你正在使用的颜色!