Я просмотрел эту сеть и Google, и решения для меня не сработали.
У меня есть команда на ViewModel UserControl. Ну, у usercontrol есть ItemsControl, связанный с ObservableCollection. Внутри DataTemplate ItemsControl.ItemTemplate у меня есть кнопка, и я хочу использовать команду. Я не могу связать команду, потому что внутри DataTemplate, datacontext является не ViewModel, а элементом ObservableCollection.
Вопрос: как я могу привязать кнопку к команде, если потерял родительский текст данных?
Я думаю, что это должно иметь простое решение, потому что я думаю, что это общая проблема.
Представьте себе этот сценарий:
У вас есть элемент ListBox с observableCollection в качестве ItemsSource, поэтому вы используете табличку данных внутри ListBox для каждого элемента в коллекции. Ну, вы хотите удалить выбранный элемент, и вы помещаете кнопку в каждой строке для этого задания. ¿Как ты это делаешь?
В MVP я могу сделать это в событии нажатия кнопки:
Button but = e.Source as Button;
if (but != null)
Presenter.ActualNote = but.DataContext as Note;
Короче. Вы отправляете текстовый текст строки (выбранный элемент) докладчику.
Но как я могу сделать это способом mvvm? Потому что мне нужно использовать команду, но я не могу назначить команду кнопке, потому что кнопка ничего не знает о ViewModel (где команда существует).
Как вы можете видеть, кнопка должна существовать внутри таблицы данных, тогда текст данных больше не является моделью представления .... Вот почему мне нужен доступ к DataContext родителя для доступа к команде.
Я надеюсь, что вы лучше понимаете мою проблему.
Спасибо.