积极答复者
userControl类型的控件插入指定list item问题?

问题
-
我想获得一个list 的第三个item的句柄要如何实现,想把C#生成的userControl类型的控件插入第三个item中,作为它的子控件显示。 list通过数据绑定和item模板创建。具体功能需求如下:进入页面后,开始下载跟贴列表数据,数据加载结束后,通过递归迭代生成跟“贴盖楼控件”FloorControl 。根据数据,将FloorControl 插入指定的list item项。其中楼高和被插入的item均为不定,由数据源决定动态生成。list 实现方式如下绑定数据源:list<ListBox x:Name="CHot" ItemsSource="{Binding}" ItemTemplate="{StaticResource CommentListTemplate}"/>item模板:每一个item<DataTemplate x:Key="CommentListTemplate"><!--<Border HorizontalAlignment="Stretch" MinWidth="455" Margin="0,8,0,8" BorderThickness="1" BorderBrush="#FFDEE2CB" CornerRadius="10">--><HyperlinkButton NavigateUri="{Binding ID, Converter={StaticResource converterIdToUri}}" HorizontalAlignment="Stretch" Padding="2" Click="browserMore" ><toolkit:ContextMenuService.ContextMenu><toolkit:ContextMenu><!-- You can suppress tilt on indivudal menu items with TiltEffect.SuppressTilt="True" --><toolkit:MenuItem Header="分享" Click="MenuItem_share" CommandParameter="{Binding ID}"/><toolkit:MenuItem Header="顶" Click="MenuItem_up" CommandParameter="{Binding ID}"/><toolkit:MenuItem Header="回复" Click="MenuItem_reply" CommandParameter="{Binding ID}"/></toolkit:ContextMenu></toolkit:ContextMenuService.ContextMenu><HyperlinkButton.Template><ControlTemplate><Grid x:Name="CommentPanel" Margin="4,4,4,4"><Grid.ColumnDefinitions><ColumnDefinition Width="1"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="Auto" /><RowDefinition Height="Auto" /><RowDefinition Height="*" /></Grid.RowDefinitions> <!--Margin="0,80,0,0"--><Line X1="0" Y1="2" X2="480" Y2="2" Stroke="Red" StrokeThickness="3"></Line><TextBlock x:Name="CommentTitle1" Grid.Column="1" Grid.Row="0" Text="{Binding From}" VerticalAlignment="Top" TextWrapping="Wrap" Foreground="{StaticResource MainForeColor}" Style="{StaticResource CommentTitle}" /><Border Grid.Row="1" x:Name="floorBorder" Grid.Column="2" Background="#FFFFEE" VerticalAlignment="Stretch" MaxWidth="434" Margin="0,2,0,2" BorderThickness="1" BorderBrush="#BBBBBB" CornerRadius="5"><ListBox x:Name="floorList" ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemsSource="{Binding CommentArray}" ItemTemplate="{StaticResource commentTemplate}"/></Border><TextBlock Grid.Column="3" Grid.Row="2" Text="{Binding Body}" TextWrapping="Wrap" Foreground="{StaticResource SummaryColor}" Style="{StaticResource CommentBody}" /></Grid></ControlTemplate></HyperlinkButton.Template></HyperlinkButton><!--</Border>--></DataTemplate>
- 已移动 Jiong ShiMVP 2011年12月22日 7:33 (发件人:Windows Phone 用户)
2011年12月22日 2:24
答案
-
"我想获得一个list 的第三个item的句柄要如何实现"
你好,可以使用 list.Items[2] 直接获取第三个item的内容.
而如果你要获取控件的话,你可以使用UI遍历,来获取你要的控件.
- 已编辑 Otomii Lu 2011年12月26日 6:15
- 已建议为答案 XuesongGao 2011年12月27日 13:07
- 已标记为答案 Otomii Lu 2011年12月28日 5:00
2011年12月26日 3:29
全部回复
-
"我想获得一个list 的第三个item的句柄要如何实现"
你好,可以使用 list.Items[2] 直接获取第三个item的内容.
而如果你要获取控件的话,你可以使用UI遍历,来获取你要的控件.
- 已编辑 Otomii Lu 2011年12月26日 6:15
- 已建议为答案 XuesongGao 2011年12月27日 13:07
- 已标记为答案 Otomii Lu 2011年12月28日 5:00
2011年12月26日 3:29 -
"list.Items[2]是ItemCollection的类型"
我使用了代码:
<ListBox Height="320" HorizontalAlignment="Left" Margin="10,10,0,0" Name="listBox1" VerticalAlignment="Top" Width="460" > <ListBoxItem Content="A"/> <ListBoxItem Content="B"/> <ListBoxItem Content="C"/> </ListBox>
(listBox1.Items[2] as ListBoxItem).Content 来获取到了值"C"
我建议你创建一个按钮,设置一个断点,当到达断点的时候,Ctrl+Shift+I打开Immediate Window.
打入(listBox1.Items[2] as ListBoxItem).Content 回车,查看你的Content是什么类型的
然后再打入 ((listBox1.Items[2] as ListBoxItem).Content as 这个类型) 一步一步获取你要的数据
2011年12月29日 3:11