Задать вопрос
Prolfiic
@Prolfiic
Интересуюсь WEB технологиями.

Как получить доступ к элементу в ItemsControl по его индексу в WPF C#?

Нужно получить доступ к кнопке в ItemsControl по индексу. Например у меня есть 100 записей и я хочу получить экземпляр 5-й кнопки, чтобы мог менять её как захочу. Исходный xaml:
<ItemsControl x:Name="mainList">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid Height="40" Margin="1 1 2 3">
                
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="40"></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition Width="50"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                
                <Button x:Name="Button" Tag="{Binding}" Click="Button_Click">
                    <Image Source="/Resources/button.png"></Image>
                </Button>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>


Хочу работать с кнопкой Button и вложенной в нее картинкой. Важно, чтобы не нужно было событие типа Click, где передается объект, а доставать из самого mainList по типу mainList[5].Button...
  • Вопрос задан
  • 781 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
  • Ulearn.me
    Проектирование на языке C#
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • OTUS
    C# Developer
    12 месяцев
    Далее
  • XYZ School
    Разработка игр на Unity
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
У ItemsControl не поддержки вибора, используйте ListBox там буде SelectedIndex

UPD
Достать по индексу можно разными способами.. Вот решение в лоб:
(this.mainList.Items.ElementAt(5) as Button)
А на будущее рекомендую почитать про патерн MVVM и как он используется в WPF
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы