Как получить доступ к объекту 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);
}
В XAML установите свойство Tag для текущего элемента.
В обработчике кликов отбросьте его.
Имя пользователя user = (отправитель как кнопка) .Tag as Usernames;
Вы можете использовать код 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
, чтобы пользователь мог взаимодействовать с ним.
Чтобы связать datacollection, часто проще использовать ObservableCollection (если данные изменяют время выполнения). Когда вы выполняете привязку, вы должны определить datacontext, datasoure и datapath. Я советую вам прочитать дополнительную информацию о привязке к MSDN: D
Это будет работать для вас -
MessageBox.Show(((sender as Button).DataContext as UserNames).UserName);