【问题标题】:How to add row style to ListBox ItemTemplate in silverlight如何在silverlight中将行样式添加到ListBox ItemTemplate
【发布时间】:2018-08-10 11:20:16
【问题描述】:

我在为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>

【问题讨论】:

  • 在您的ListBox 项目模板中,将GridBackground 属性绑定到数据模型中的某个值,以便可以从中计算背景画笔颜色,通常是一个连续整数ID。然后,实现IValueConverter 接口并在绑定表达式中引用它。
  • 谢谢我用 IValueConverter 解决了这个问题。这是最好的实施方式。
  • 您的想法是对的,只是您的实现存在错误,并且由于 counter 作为局部变量,因此可能无法始终正常运行。
  • 但这对我有用。如果您有任何建议,请告诉我。
  • 添加几个项目到你的列表框,这样你就必须上下滚动,然后它就不再起作用了。

标签: c# .net silverlight listboxitem


【解决方案1】:

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

<converters:RowStyleConverter x:Key="RowStyleConverter"/>

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

C#

  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++;
        }      

    }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-01-20
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多