Как получить доступ к ListItem из кода при использовании DataTemplate - ListBox - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть список, который связывает данные с DataTable, и теперь мне нужно получить доступ к конкретному элементу списка, скажем, к первому пятому, из исходного кода:

<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>

Вот мойЦикл foreach для доступа к каждому элементу списка, но я могу преобразовать liSelectedMainCategory в ListItem ... Что я делаю неправильно ????

foreach (ListItem liSelectedMainCategory in lbMainCategores.Items)
                { }

1 Ответ

1 голос
/ 23 декабря 2011

Вы используете свойство 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...
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...