获取listboxitem中的项目

时间:2012-04-23 12:01:53

标签: windows-phone-7 windows-phone-7.1

我有一个关于listbox对象的xaml代码:

<ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="FirstListBox_SelectionChanged">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <Grid>
                                    <TextBlock Text="{Binding LineOne}" TextWrapping="NoWrap" Margin="50,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                    <TextBlock Text="{Binding LineTwo}" TextWrapping="NoWrap" Margin="12,60,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                    <CheckBox VerticalAlignment="Top" Margin="0,-5,0,0"/>
                                </Grid>                                
                            </StackPanel>                            
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

我通过代码得到了我的listboxitem:

ListBoxItem item = this.list.ItemContainerGenerator.ContainerFromIndex(2) as ListBoxItem;

但我不知道如何获取此列表框项目中的所有项目(包括文本块和复选框选项)。

请帮帮我。谢谢大家。

1 个答案:

答案 0 :(得分:1)

理想情况下,您希望将复选框绑定到商品数据模型的属性,例如,您可能有......

public string LineOne { get; set; }
public string LineTwo { get; set; }
public bool MyBooleanValue { get; set; }

然后

<ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="FirstListBox_SelectionChanged">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <Grid>
                    <TextBlock Text="{Binding LineOne}" TextWrapping="NoWrap" Margin="50,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                    <TextBlock Text="{Binding LineTwo}" TextWrapping="NoWrap" Margin="12,60,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                    <CheckBox Checked="{Binding MyBoolValue, Mode=TwoWay}" VerticalAlignment="Top" Margin="0,-5,0,0"/>
                </Grid>                                
            </StackPanel>                            
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

然后,您可以拉回当前正在查看的项目的DataContext(在点击方法或类似方法上),或者当您解析“Items”集合时,所有复选框状态都将在您的子对象中已经