获取动态绑定列表框项
本文关键字:列表 动态绑定 获取 | 更新日期: 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。
这个问题 + 答案总结了这一点,并提供了问题的解决方案。
使用转换器会有所帮助。这并不全是陈述性的,而是我最初的想法。
更改列表框中最后一项的样式