Silverlight 3 - градиент как фоновая проблема - ошибка? - PullRequest
1 голос
/ 26 августа 2009

У меня проблема при попытке установить градиент для фона сетки в приложении Silverlight 3. Когда я устанавливаю фон сетки в моем приложении на градиент, этот градиент просто не отображается в браузере. Я установил эту градиентную кисть как resouce (как в app.xaml, так и в локальном файле XAML), и я также попытался жестко закодировать градиентную кисть напрямую. Я сделал изменения вручную в XAML от VS и в Expression Blend.

Когда производится настройка и файл просматривается в режиме 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 Ответ

2 голосов
/ 12 октября 2009

ОК, так вот в чем дело. Это не ошибка, по крайней мере, со стороны Silverlight! Это ошибка со стороны разработчика!

Если вы посмотрите ближе на градиент, используемый в ресурсе, изменятся только первые два шестнадцатеричных значения (см. Ниже). Это, конечно же, Альфа-канал, и вслед за этим все Ф, я просто перехожу с одного уровня прозрачности на другой.

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

Теперь, поскольку этот компонент внедряется в большую страницу, фон задается большей страницей. Таким образом, в Blend фоном является фон BLEND, который является серым цветом, что делает все это похожим на серый градиент в Blend, но он просто белый с различными уровнями прозрачности. Когда элемент управления вводится на главную страницу с белым фоном, вы его не видите.

Так в чем же мораль этой истории? Обратите внимание на цвет, с которым вы работаете!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...