使用DataTemplate时如何从代码中访问ListItem - ListBox

时间:2011-12-23 18:01:40

标签: wpf datatemplate listitem

我有一个列表框,它将数据绑定到DataTable,现在我需要访问特定的List Item,比如说第5个,来自源代码:

<ListBox Grid.Column="1" ItemsSource="{Binding ElementName=_this, Path=AllMainCategoriesTable}" HorizontalAlignment="Center" BorderBrush="Transparent" Background="Transparent" x:Name="lbMainCategories">
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <RadioButton Grid.Column="0" Content="{Binding Path=main_category_name}" VerticalAlignment="Center" GroupName="grpMainCategory" x:Name="rdbEnableDisable" />
            <Label Grid.Column="1" Width="30" Background="Transparent" />
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>

这是我访问每个listitem的foreach循环,但我可以将liSelectedMainCategory强制转换为ListItem ...我做错了什么????

foreach (ListItem liSelectedMainCategory in lbMainCategores.Items)
                { }

1 个答案:

答案 0 :(得分:1)

您正在使用Items属性,它是容器的集合。该集合中的元素不会按照您想要的方式进行转换。考虑使用像这个片段......

    ICollectionView icv = CollectionViewSource.GetDefaultView(listBox1.Items);
    foreach (var v in icv)
    {
        var lbi = v as ListBoxItem;
        if (lbi != null)
        {
            var s = lbi.Content; // what you are after is here...
        }
    }