Можете ли вы установить кисть градиента для фона списка в Silverlight? - PullRequest
2 голосов
/ 02 июня 2010

Я ищу способ установить градиентную кисть в качестве фона для элемента списка. Я определил DataTemplate и определил градиентную кисть, но он всегда отображается как фон списка (то есть он никогда не отображается как градиентная кисть).

Мне удалось установить фон самого списка, и я могу установить фон списка в стандартный цвет, используя объект "setter" .... но ни один из них не является тем, что я хочу.

Я действительно хочу, чтобы фоном каждого элемента списка была кисть градиента.

Ниже приведена табличка с данными, которую я построил.

<ListBox Name="MyListBox"  Margin="12,67,12,169">

        <ListBox.ItemTemplate>
        <DataTemplate>
                <Grid Height="51"  VerticalAlignment="Bottom">
                    <Grid.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="#FFC9F4D0"/>
                            <GradientStop Color="#FF2AC12A" Offset="0.333"/>
                            <GradientStop Color="#FF35DE35" Offset="1"/>
                        </LinearGradientBrush>
                    </Grid.Background>
                    <Canvas >
                        <dataInput:Label Width="227" Foreground="Yellow" Canvas.Left="158" Canvas.Top="8" Content="{Binding Place}"/>
                        <dataInput:Label Width="146" Foreground="Yellow" Canvas.Left="8" Canvas.Top="8" Content="{Binding Date}"/>
                        <dataInput:Label Content="{Binding People}" Width="346" FontSize="9.333" Foreground="Black" Canvas.Left="166" Canvas.Top="28"/>
                        <!-- <dataInput:Label Width="45" Content="Accept" Foreground="White" Canvas.Left="8" Canvas.Top="28"/>
                        <dataInput:Label Width="45" Content="Decline" Foreground="White" Canvas.Left="57" Canvas.Top="28"/> -->
                        <dataInput:Label Content="SomeText" Width="101" FontSize="9.333" Foreground="White" Canvas.Left="389" Canvas.Top="10"/>
                        <Image Height="21" Width="21" Canvas.Left="500" Canvas.Top="8" Source="Green Button.png"/>
                    </Canvas>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

Что происходит в вашем шаблоне данных:

Фон сетки настраивается на нужный вам цвет. Однако поверх этой сетки ваш холст окрашивается. Следовательно, линейный градиентный фон невидим.

Как это исправить?

  1. Set Canvas.Background = {Binding}
  2. Для которого когда-либо элемента управления в пределах холста, которому вы хотите наследовать Grid.Background, установите фон этого элемента управления = {Binding}

Пример кода:

->

                    <Canvas Background="{Binding}">

                        <TextBox Width="227" Canvas.Left="158" Canvas.Top="8" Foreground="Yellow" Text="{Binding Name}" Background="{Binding}"/>
                        <TextBox Width="146" Canvas.Left="8" Canvas.Top="8" Foreground="Yellow" Text="{Binding Language}" Background="{Binding}"/>

                    </Canvas>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Надеюсь, это поможет!

0 голосов
/ 02 июня 2010

То, что вы делаете, правильно, оно не устанавливает фон вашего списка, оно устанавливает только фон вашего списка. Я думаю, что вы не могли понять это.

Чтобы понять это, просто задайте поле для сетки 5 и затем посмотрите. То, что вы делаете правильно, не устанавливает фон вашего списка, он устанавливает только фон вашего элемента списка. Я думаю, что вы не могли понять это.

Чтобы понять это, просто добавьте поле к сетке 5, а затем посмотрите.

...