2010-04-28 7 views
1

J'ai trouvé quelques exemples de code qui crée un gradient de remplissage dans un contrôle rectangle WPF:WPF linéaire Remplissez

<Rectangle Height="{Binding ElementName=txtName}" Width="{Binding ElementName=txtName}"> 
          <Rectangle.Fill> 
           <LinearGradientBrush> 
            <GradientStop Color="Silver" Offset="0.0" /> 
            <GradientStop Color="Black" Offset="0.5" /> 
            <GradientStop Color="white" Offset="1.0" /> 
           </LinearGradientBrush> 
          </Rectangle.Fill> 
         </Rectangle> 

J'ai quelques écrit un code qui affiche une collection de contenant de ListBox détails de MyObject:

<UserControl.Resources> 
     <DataTemplate x:Key="CustomerTemplate"> 
      <Border BorderThickness="2" BorderBrush="Silver" CornerRadius="5" Padding="1" Height="50"> 
       <Grid x:Name="thisGrid"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 
        <StackPanel Orientation="Horizontal" > 
           <Image Source="C:\MyImage.jpg" Height="50" Width="100" ></Image> 
        </StackPanel> 
        <Border Grid.Column="1" Margin="0" Padding="0"> 
          <StackPanel Orientation="Vertical"> 
          <TextBlock Name="txtName" Text="{Binding Name}" Background="Silver" Foreground="Black" FontSize="16" FontWeight="Bold" Height="25"/> 
         </StackPanel> 
        </Border> 

       </Grid> 
      </Border> 
     </DataTemplate> 
</UserControl.Resources> 
    <ListBox ItemsSource="{Binding}" ItemTemplate="{StaticResource CustomerTemplate}" 
       Name="grdList" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" > 

    </ListBox> 

Je voudrais appliquer le même stlye de remplissage que je reçois avec le premier exemple, dans chacun de mes ListBox. Je n'arrive pas à comprendre comment faire ça. Quelqu'un peut-il aider?

Merci

Répondre

0

Avez-vous regardé régler le remplissage de fond des conteneurs d'éléments en utilisant la propriété ItemContainerStyle de ListBox?

0

Comme vous pouvez changer ControlTemplate de votre ListBox comme dans l'exemple ici http://msdn.microsoft.com/en-us/library/ms754242(VS.85).aspx, vous pouvez écrire quelque chose comme ça

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Page.Resources> 
    <Style x:Key="{x:Type ListBox}" TargetType="ListBox"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="ListBox"> 
     <Border 
      Name="Border" 
      BorderThickness="1" 
      CornerRadius="20" Style="{DynamicResource DynamicGridBrush}">   
      <ScrollViewer Margin="0" Focusable="false"> 
      <StackPanel Margin="2" IsItemsHost="True" /> 
      </ScrollViewer> 
     </Border>   
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
<Style TargetType="Border" x:Key="DynamicGridBrush"> 
    <Setter Property="Background"> 
     <Setter.Value> 
     <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
      <GradientStop Offset="0" Color="LightBlue" /> 
      <GradientStop Offset="0.65" Color="LightGreen" /> 
      <GradientStop Offset="1" Color="White" /> 
     </LinearGradientBrush> 
     </Setter.Value>  
    </Setter> 
    </Style></Page.Resources> 
    <Grid> 
    <ListBox>  
     <TextBlock>aaa</TextBlock> 
     <TextBlock>bbb</TextBlock> 
     <TextBlock>ccc</TextBlock> 
    </ListBox> 
    </Grid> 
</Page> 

Si je comprends bien votre question et vous souhaitez appliquer un fond dégradé à l'ensemble de votre zone de liste.