Получить значение элемента списка с шаблоном элемента

У меня есть окно со свойством IpList типа ObervableCollection<string>, и я устанавливаю свойство DataContext окна в само окно, чтобы можно было привязать свойства элементов XAML к свойствам окна. Один элемент XAML в моем окне — это ListBox, у которого есть ItemTemplate:

<ListBox
    ItemsSource="{Binding IpList}"
    x:Name="lbIps">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <Button
                    Click="lbIps_bnClose_Click"
                    Content="X"
                    DockPanel.Dock="Left" />
                <TextBlock
                    Text="{Binding}" />
            </DockPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Я хочу, чтобы элементы списка удалялись при нажатии кнопки «X». Моей первой попыткой было получить индекс выбранного элемента и удалить его из списка. Но когда я только нажимаю на кнопку, ни один элемент не выбран. Моя вторая попытка состояла в том, чтобы удалить элемент по значению вместо индекса, но я не мог понять, как получить значение элемента списка, содержащего нажатую кнопку. Итак, мои вопросы: Есть ли возможность получить индекс/значение элемента списка, содержащего нажатую кнопку? Если да, то как я могу это сделать? Есть ли другой способ удалить элемент родительского списка для нажатой кнопки "X"?


person Cubi73    schedule 03.07.2014    source источник


Ответы (1)


Если вы не используете MVVM:

Поместите это в событие клика

string s=(string)((sender as Button).DataContext);
IpList.Remove(item); 
person The One    schedule 03.07.2014
comment
Я не понял string s=Button btn=..., но я понял, что вы имели в виду, и это работает. Спасибо :) - person Cubi73; 04.07.2014
comment
@ Cubinator73 Нет, это была опечатка, извините. Я обновил ответ. - person The One; 04.07.2014
comment
Действительно, была очень маленькая ошибка, но я не понизил этот ответ. Я проголосовал за это, потому что я понял, что вы хотели сказать. :) - person Cubi73; 04.07.2014
comment
@Cubinator73 Спасибо за это!! - person The One; 04.07.2014