Я начал изучать .Net MAUI. Делаю Note App под windows. Так же с применением MVVM паттерна, его так же использую впервые. Проблема заключается что я не знаю как реализовать Редактирование ячейки в ListView. Я добавляю элемент в ListView, могу нажать на него и получить информацию, но как Отредактировать ячейки не знаю.
<ListView ItemsSource="{Binding Notes}" ItemTapped="ListView_ItemTapped">
<ListView.ItemTemplate>
<DataTemplate x:DataType="{x:Type model:Note}">
<TextCell Text="{Binding Title}" Detail="{Binding Detail}" TextColor="#9a26ff"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Вот привязка к ListView
internal partial class NotesViewModel : ObservableObject
{
[ObservableProperty]
private ObservableCollection<Note> notes = new();
[ObservableProperty]
private Note note = new();
[RelayCommand]
private void Save(Note? note)
{
if (note is null)
{
Notes.Add(Note);
Note = new();
}
else
{
note = new Note();
}
}
}

TextCellна что-то, что это позволяет, например,TextBox? И даItemTapped="ListView_ItemTapped"- это нарушение MVVM, ибо View слой не должен знать про другие слои, про данные, а у вас прям в классе окна вдруг событие в котором вы обрабатываете данные. В MVVM все основывается на привязках, включая все события, которые заменяются командами (ICommand). Конкретно в вашем случае, там достаточно простогоListView SelectedItem="{Binding ...}"(ну или чет аналогичное). – EvgeniyZ Aug 29 '23 at 14:03ItemTappedэто нарушение, но я просто не знал чем заменить, спасибо.TextCellМне подходит. При нажатии на кнопку сохранения вListViewдобавляется новыйTextCellДля просмотра полной его информации нужно на него нажать и его информация отобразиться в соответствующих полях (Title в Title, Detail в Detail) за тем после редактирования и нажатия кнопки сохранения нужно что бы этотTextCellредактировался, а не создавался новый. В вопросе приложу скрин приложения – Studient Aug 29 '23 at 15:46Title = selectedItem.Title;и аналогично так для всех полей, ну а по кнопке "сохранить" делал обратноеselectedItem.Title = Title;или добавление нового на основе этих данных. – EvgeniyZ Aug 29 '23 at 16:06Но не знаю что писать в методе. Как обратиться к тому самому "Selected Item". Свойства "Title" и "Detail" у меня есть они уже в
– Studient Aug 29 '23 at 17:04{Binding}. Соответственно мне нужно что бы при выделении элемента данные из него отправлялись в эти самые "Title" и "Detail" и Изменялись без нажатия кнопки, это хорошая идея, я в теории понимаю как это, но на практике ничего сварганить не могу(ItemTapped- это событие (view часть), которая вам не нужна. ПовторюSelectedItemпривязываете его к свойству в ViewModel и на его основе делаете нужную логику. Ну а так, как вы используете Community Toolkit для реализации INPC, то вы можете написать метод, который будет вызываться в момент изменения свойства, напримерpublic partial OnMySuperProperyChanged(MySuperClass newValue) { //Делаем что-то }– EvgeniyZ Aug 29 '23 at 17:10[ObservableProperty] private Note _selectedNote; public partial void OnSelectedNodeChanged(Note? newValue){ // ... }Ну а в XAML<ListView SelectedItem="{Binding SelectedNode}">, все, при клике должен вызываться метод, а в свойствеSelectedNodeбудет то, что выбрано. Дальше уже делаете остальную логику, например, как сказал ранееTitle = SelectedNode.Title;, гдеTitleэто привязанное свойство к простомуTextBox. – EvgeniyZ Aug 29 '23 at 17:13partialметода. p.s (У меня ошибка: Отсутствует определяющее объявление для реализующего объявления разделяемого метода...) – Studient Aug 29 '23 at 18:15