代码之家  ›  专栏  ›  技术社区  ›  Lakmi

如何在silverlight中向ListBox ItemTemplate添加行样式

  •  1
  • Lakmi  · 技术社区  · 6 年前

    我在添加替换行样式时遇到问题 ListBox.ItemTemplate

     <ListBox x:Name="NListBox" ItemsSource="{Binding NList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
                         SelectedItem="{Binding SelectedItem,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
                         Style="{StaticResource CommonListBoxStyle}"  Loaded="NListBox_Loaded">
                    <ListBox.ItemTemplate >
                        <DataTemplate >
                            <Grid Margin="0" Width="1600" 
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition  Width="6*"/>
                                    <ColumnDefinition Width="2*" ></ColumnDefinition>
                                    <ColumnDefinition Width="2*" ></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition/>
                                    <RowDefinition />
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                                <TextBlock FontSize="20"  Loaded="TextBlock_Loaded"  Grid.ColumnSpan="3" Text="{Binding H}"  />
                                <TextBlock Grid.Row="0" Grid.Column="1" FontSize="12" HorizontalAlignment="Right">Publish Date</TextBlock>
                                <TextBlock Grid.Row="0" Grid.Column="3" FontSize="12"  Text="{Binding PublishDate,StringFormat=\{0:dd.MM.yy\}}" 
                                           />
                                <TextBlock Grid.Row="1" FontSize="15" TextWrapping="Wrap" Grid.ColumnSpan="3" Text="{Binding Description}"  
                                           Height="50" />
                                <TextBlock Grid.Row="2" Grid.Column="0"  FontSize="12" Text="{Binding link}"  />
                                <TextBlock Grid.Row="2" Grid.Column="1" FontSize="12" HorizontalAlignment="Right">Expiry Date</TextBlock>
                                <TextBlock Grid.Row="2" Grid.Column="3"  FontSize="12" Text="{Binding ExpiryDate,StringFormat=\{0:dd.MM.yy\}}" 
                                           />
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
    
                </ListBox>
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Lakmi    6 年前

    这就是我这样做的原因 .xml文件

    <converters:RowStyleConverter x:Key="RowStyleConverter"/>
    
    <ListBox>
    <ListBox.ItemTemplate >   
       <DataTemplate >
          <Grid Background="{Binding Converter={StaticResource RowStyleConverter}}"></Grid>
       </DataTemplate >
    </ListBox.ItemTemplate >
    </ListBox>
    

      public class RowStyleConverter : IValueConverter
        {
            int counter = 0;
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {   
                if (counter % 2 == 1)
                {  
                    return new SolidColorBrush(Color.FromArgb(255, 233, 252, 251));                    
                }
                else
                {   
                    return new SolidColorBrush(Color.FromArgb(255, 220, 239, 238));
                }               
                counter++;
            }      
    
        }