de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 cpoDesign
cpoDesign
Вопрос

Как определить кнопку для элемента списка

Как получить доступ к объекту UserNames, который привязан к списку?

Что я сделал до сих пор:

Элемент списка - объект в моем случае:

 new List();
 this.users.Add(new UserNames() {Id = 1, UserName = "name 1"});

Я использую шаблон данных, для которого у меня есть ярлык и кнопка.

Мой список выглядит следующим образом:


            
                
                    
                        
                            
                        
                            
                        
                    
                
            
        

Где мой метод для кнопки. Как вы можете видеть, я попытался использовать родительский вариант, но без успеха

 private void MyButton_Click(object sender, RoutedEventArgs e)
        {
            //StackPanel panel = (StackPanel)((Button)sender).Parent;
            //WrapPanel wrapPanel = (WrapPanel) panel.Parent;
            //ListItem listItem = (ListItem) wrapPanel.Parent;
            //ListBox box = (ListBox) listItem.Parent;
            //UserNames itemToReport = (UserNames) (box.SelectedItem);
            //MessageBox.Show(itemToReport.UserName);


        }
1 2011-10-27T19:07:53+00:00 4
 H.B.
H.B.
Редактировал вопрос 27-го октября 2011 в 10:06
Программирование
wpf
Wayne Tanner
27-го октября 2011 в 7:32
2011-10-27T19:32:44+00:00
Дополнительно
Источник
Редактировать
#56791798

В XAML установите свойство Tag для текущего элемента.

В обработчике кликов отбросьте его.

Имя пользователя user = (отправитель как кнопка) .Tag as Usernames;

1
0
Rachel
27-го октября 2011 в 7:59
2011-10-27T19:59:56+00:00
Дополнительно
Источник
Редактировать
#56791800

Вы можете использовать код DataContext Button, так как это будет ваш объект UserName

private void MyButton_Click(object sender, RoutedEventArgs e)
{
    Button b = sender as Button;
    UserNames data = b.DataContext as UserNames;

    MessageBox.Show(data.UserName);
}

Я всегда думал, что с WPF ваше приложение является DataContext , в то время как объекты пользовательского интерфейса, такие как кнопки, списки, текстовые поля и т. Д., - это просто хороший слой, который находится поверх DataContext , чтобы пользователь мог взаимодействовать с ним.

1
0
7heViking
27-го октября 2011 в 7:34
2011-10-27T19:34:01+00:00
Дополнительно
Источник
Редактировать
#56791799

Чтобы связать datacollection, часто проще использовать ObservableCollection (если данные изменяют время выполнения). Когда вы выполняете привязку, вы должны определить datacontext, datasoure и datapath. Я советую вам прочитать дополнительную информацию о привязке к MSDN: D

0
0
Rohit Vats
27-го октября 2011 в 8:02
2011-10-27T20:02:26+00:00
Дополнительно
Источник
Редактировать
#56791801

Это будет работать для вас -

MessageBox.Show(((sender as Button).DataContext as UserNames).UserName);
0
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 5 дней назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией