1

Silverlight 3 アプリでグリッドの背景をグラデーションに設定しようとすると問題が発生します。アプリケーションでグリッドの背景をグラデーションに設定すると、そのグラデーションはブラウザーでレンダリングされません。このグラデーション ブラシをリソースとして設定し (app.xaml とローカル XAML ファイルの両方で)、グラデーション ブラシを直接ハード コーディングしようとしました。VS の XAML と Expression Blend で手動で変更を加えました。

変更が行われ、ファイルが Blend で表示されると、背景色が正しくレンダリングされます。背景が単色に設定されている場合 (ハードコードとリソースの両方)、背景は Expression とブラウザーの両方で適切にレンダリングされます。これらのことはどちらも、問題のコントロールの上に 1 つのコントロールをレンダリングする 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>

何かご意見は?

4

1 に答える 1

2

よし、これで取り引きだ。少なくとも Silverlight の側では、これはバグではありません! これは開発者側のバグです。

リソースで使用されているグラデーションをよく見ると、最初の 2 つの 16 進数値だけが変化します (以下を参照)。もちろん、これはアルファ チャネルであり、それに続くすべての F と一緒です。私は、あるレベルの透明度から別のレベルの透明度に移行しているだけです。

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

これは大きなページに挿入されるコンポーネントであるため、背景は大きなページによって設定されます。Blend では、背景は BLEND の背景です。これは灰色で、Blend では全体が灰色のグラデーションになっているように見えますが、さまざまなレベルの透明度を持つ単純な白です。白い背景を持つメイン ページにコントロールが挿入されると、コントロールは表示されません。

では、この話の教訓は何ですか?扱う色に注目!

于 2009-10-12T13:14:23.603 に答える