获取动态绑定列表框项

本文关键字:列表 动态绑定 获取 | 更新日期: 2023-09-27 18:35:51

我的Windows Phone 8.1 Silverlight应用程序中有以下列表框

        <ListBox  x:Name="ScenarioControl" FontFamily="Segoe WP">
            <ListBox.Resources>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>
            </ListBox.Resources>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border Name="myborder"  Margin="0,0,0,0" BorderThickness="0,0,0,3" BorderBrush="Black">
                        <Grid HorizontalAlignment="Stretch" Margin="0,0,0,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition Width="auto"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <TextBlock Tap="TextBlock_Tap" HorizontalAlignment="Left" VerticalAlignment="Center"  Text="{Binding Path=Title, Mode=OneTime}" FontFamily="Segoe WP Semibold" Grid.Column="0" FontSize="23"/>
                            <Image Tap="Image_Tap" Source="/Images/blogger_small.png" HorizontalAlignment="Right" VerticalAlignment="Center" Grid.Column="1" OpacityMask="Black"/>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

如您所见,文本块动态绑定。我需要更改最后一个 TextBlock 元素的一些属性,但我找不到在代码中获取确切元素的方法。

我进行了搜索,发现有带有 ItemContainerGenerator 方法的解决方案,但这对我不起作用,以下代码行始终返回 null。

ListBoxItem item = this.ScenarioControl.ItemContainerGenerator.ContainerFromIndex(ScenarioControl.Items.Count - 1) as ListBoxItem;

获取动态绑定列表框项

此问题的最常见原因是,当您调用 ItemContainerGenerator 时,有问题的项不可见。 大多数列表框等都虚拟化了它们的内容,这意味着它们不会为用户不可见的元素生成 UI,因此当您获取容器时,只会获得 null。

这个问题 + 答案总结了这一点,并提供了问题的解决方案。

使用转换器会有所帮助。这并不全是陈述性的,而是我最初的想法。

更改列表框中最后一项的样式