2009-08-26 8 views
1

Ich habe ein Problem, wenn ich versuche, den Hintergrund eines Rasters in einer Silverlight 3 App auf einen Farbverlauf zu setzen. Wenn ich den Hintergrund eines Rasters in meiner Anwendung auf einen Farbverlauf einstelle, wird dieser Farbverlauf im Browser einfach nicht dargestellt. Ich habe diesen Farbverlauf Pinsel als eine Ressource (sowohl in app.xaml als auch in der lokalen XAML-Datei) und ich habe auch versucht, den Farbverlauf Pinsel direkt zu programmieren. Ich habe die Änderungen manuell in der XAML von VS und in Expression Blend vorgenommen.Silverlight 3 - Farbverlauf als Hintergrund - Bug?

Wenn das Chane erstellt wird und die Datei in Blend angezeigt wird, wird die Hintergrundfarbe korrekt gerendert. Wenn der Hintergrund auf eine feste Farbe eingestellt ist (sowohl fest codiert als auch als Ressource), kann der Hintergrund sowohl in Expression als auch im Browser gut dargestellt werden. Beide dieser Dinge deuten darauf hin, dass dies kein Z-Index-Problem mit einem Steuerelement Rendern auf dem Steuerelement in Frage ist.

Die XAML für die Bürste ist:

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

Die XAML für das Netz und es ist Inhalt:

<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> 

Irgendwelche Gedanken?

+0

Wow ... Ich habe es einfach versucht. Du hast Recht ... kein Hintergrund! –

Antwort

2

OK, also hier ist der Deal. Es ist kein Fehler, zumindest nicht bei Silverlight! Es ist ein Fehler seitens des Entwicklers!

Wenn Sie sich den Gradienten in der Ressource genauer ansehen, ändern sich nur die ersten beiden Hexwerte (siehe unten). Dies ist natürlich der Alpha-Kanal, zusammen mit allen folgenden Fs. Ich gehe wirklich nur von einer Ebene der Transparenz zu einer anderen.

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

Nun becuase dies eine Komponente, die in eine größere Seite injiziert ist wird, wird der Hintergrund durch die größere Seite gesetzt. In Blend ist der Hintergrund also BLENDs Hintergrund, eine graue Farbe, die das Ganze so aussehen lässt, als hätte es in Blend einen grauen Farbverlauf, aber es ist einfach weiß mit verschiedenen Ebenen der Transparenz. Wenn das Steuerelement in die Hauptseite mit einem weißen Hintergrund eingefügt wird, können Sie es nicht sehen.

Also, was ist Moral von dieser Geschichte? Achten Sie auf die Farbe, mit der Sie arbeiten!