2

リストボックスアイテムの背景としてgradientbrushを設定する方法を探しています。DataTemplateを定義し、グラデーションブラシを指定しましたが、常にリストボックスの背景として表示されます(つまり、グラデーションブラシとして表示されることはありません)。

リストボックス自体の背景を設定することができ、「セッター」オブジェクトを使用してリストボックスアイテムの背景を標準色に設定できます。しかし、これらはどれも私が求めているものではありません。

各リストアイテムの背景をグラデーションブラシにしたいのですが。

以下は私が作成したデータテンプレートです。

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

何かご意見は?

4

2 に答える 2

2

データテンプレートで何が起こっているか:

グリッドの背景は、必要な色に設定されています。ただし、このグリッドの上に、キャンバスがペイントされています。したがって、線形グラデーションの背景は表示されません。

これを修正する方法は?

  1. Canvas.Background={Binding}を設定します
  2. Grid.Backgroundを継承するキャンバス内のコントロールについては、そのコントロールのBackground={Binding}を設定します。

サンプルコード:

</Grid.ColumnDefinitions>->

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

お役に立てれば!

于 2010-06-02T15:01:08.993 に答える
0

あなたがしていることは正しいです。リストボックスの背景を設定するのではなく、リストボックスアイテムの背景のみを設定します。あなたはそれを理解できなかったと思います。

それを理解するには、グリッド5にマージンを与えてから見てください。あなたがしていることは正しいことです。リストボックスの背景を設定するのではなく、リストボックスアイテムの背景のみを設定します。あなたはそれを理解できなかったと思います。

それを理解するには、グリッド 5 にマージンを与えてから見てください。

于 2010-06-02T10:15:31.040 に答える