WPF DataBinding - событие Fire из повторяющейся кнопки управления - PullRequest
1 голос
/ 20 февраля 2009

Исходя из моего вопроса о связывании в целом , я хотел бы попросить помощи по следующему сценарию.

У меня есть коллекция объектов (imageFileData), отображаемая с помощью DataTemplate в элементе управления ListBox. Элемент управления привязан к ObservableCollection. И коллекция, и шаблон определены в файлах xaml и xaml.cs моего приложения. Динамическое добавление элементов в коллекцию работает должным образом и отображает новый шаблонный элемент в моем списке. Хорошо.

Одна из вещей, которые я хочу сделать, - это удалить определенный элемент из коллекции, нажав кнопку, определенную в шаблоне данных. Определение обработчика Click для кнопки позволяет мне обрабатывать событие, но я понятия не имею, где взять объект imageFileData, который относится к шаблонной кнопке. Мой обработчик событий для кнопки, очевидно, передает кнопку как отправителя и набор RoutedEventArgs, но я не могу понять, как связать эти данные обратно с элементом из коллекции, чтобы позволить мне удалить его.

Может ли кто-нибудь помочь мне с этим, или я обречен на неловкий и бесплодный поиск в Google, потому что я не знаю, с чего начать? ;)

Спасибо ZS

Ответы [ 2 ]

5 голосов
/ 20 февраля 2009

Данные, используемые для генерации элемента, будут в Button DataContext (которые он унаследовал от контейнера - ListBoxItem в вашем случае):

private void ButtonClicked(object sender, EventArgs e)
{
    var button = sender as Button;
    var imageFileData = button.DataContext as ImageFileData;

    ...
}
0 голосов
/ 06 марта 2009

Другим способом было бы пройти визуальное дерево до ListBoxItem (содержащего все элементы, которые вы определили в datatemplate). Если у вас есть ListBoxItem, содержащий нажатую кнопку, вы можете легко получить и удалить данные ListBoxItem.

Пример прогулки по визуальному дереву вверх * здесь в GetObjectDataFromPoint и здесь в FindAncestor.

...