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...
  • Вопрос задан
  • 691 просмотр
Пригласить эксперта
Ответы на вопрос 1
У ItemsControl не поддержки вибора, используйте ListBox там буде SelectedIndex

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

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

Войти через центр авторизации
Похожие вопросы