Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
能否在silverlight中为listboxitem背景设置渐变笔刷?_Silverlight_Xaml_Listbox_Listboxitem_Lineargradientbrush - Fatal编程技术网

能否在silverlight中为listboxitem背景设置渐变笔刷?

能否在silverlight中为listboxitem背景设置渐变笔刷?,silverlight,xaml,listbox,listboxitem,lineargradientbrush,Silverlight,Xaml,Listbox,Listboxitem,Lineargradientbrush,我正在寻找一种将gradientbrush设置为列表框项目背景的方法。我定义了一个DataTemplate,并指定了一个渐变笔刷,但它始终显示为列表框背景(即,它从不显示为渐变笔刷) 我已经能够设置listbox本身的背景,我可以使用“setter”对象将listboxitem的背景设置为标准颜色……但这些都不是我想要的 我真的希望每个列表项上的背景是一个渐变笔刷 下面是我构建的数据模板 <ListBox Name="MyListBox" Margin="12,67,12,169">

我正在寻找一种将gradientbrush设置为列表框项目背景的方法。我定义了一个DataTemplate,并指定了一个渐变笔刷,但它始终显示为列表框背景(即,它从不显示为渐变笔刷)

我已经能够设置listbox本身的背景,我可以使用“setter”对象将listboxitem的背景设置为标准颜色……但这些都不是我想要的

我真的希望每个列表项上的背景是一个渐变笔刷

下面是我构建的数据模板

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


有什么想法吗?

您所做的是正确的,它不会设置listbox的背景,它只设置listboxitem的背景。我想你想不出来

要计算出来,只需给u r网格5留一个空白,然后查看。您所做的是正确的,它不设置listbox的背景,它只设置listboxitem的背景。我想你想不出来


要解决这个问题,只需给u r网格5留一个余量,然后查看。

您的数据模板中发生了什么:

网格的背景设置为所需的颜色。然而,在这个网格的顶部,您的画布正在被绘制。因此,线性渐变背景是不可见的

如何纠正这一点

  • Set Canvas.Background={Binding}
  • 对于画布中希望继承Grid.Background的任何控件,请将该控件的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>