Я пытаюсь запустить событие или выполнить какое-либо действие после нажатия любого элемента в списке:
Я использую библиотеку CommunityToolkit.Mvvm, но не знаю, как получить ее данные после нажатия или выбора любого элемента. Например, показать предупреждение и показать его информацию после нажатия.
У меня пока так:
<ListView ItemsSource = "{Binding Almacenes}" HasUnevenRows = "True" SelectedItem = "{Binding SelectedItem}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding = "20">
<Grid.RowDefinitions>
<RowDefinition Height = "Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width = "Auto" />
<ColumnDefinition Width = "Auto" />
</Grid.ColumnDefinitions>
<Image Grid.RowSpan = "2"
Source = "empresita.svg"
Aspect = "AspectFill"
HeightRequest = "60"
WidthRequest = "60" />
<Label Grid.Column = "1" Padding = "15,0,0,0"
Text = "{Binding nombre}"
FontAttributes = "Bold"
FontSize = "16"/>
<Label Grid.Row = "1" Padding = "15,0,0,0"
Grid.Column = "1"
Text = "descripcion"
FontAttributes = "Italic"
VerticalOptions = "End"
FontSize = "16"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
серверная часть:
[ObservableProperty]
List<Almacenes> _almacenes;
[ObservableProperty]
Almacenes _selectedItem;
public SeleccionAlmacenViewModel()
{
Almacenes = new List<Almacenes>()
{
new Almacenes()
{
nombre = "Tomato"
},
new Almacenes()
{
nombre = "Pizza"
},
new Almacenes()
{
nombre = "Romaine"
},
};
}
// aqui se debe cargar la lista
public SeleccionAlmacenViewModel(List<Almacenes> almacenes)
{
Almacenes = new List<Almacenes>();
CargarAlmacenes(almacenes);
}
private void CargarAlmacenes(List<Almacenes> almacenes)
{
Almacenes = almacenes;
}
Ошибки нет, но я не могу сделать эту работу. Как получить данные о выбранном элементе с помощью этого инструментария? Как будто я пытаюсь запустить это в методе, потому что я буду кодировать себя внутри запущенного метода.
Обновлено: на самом деле я не знаю, что делаю, но я пробовал это и тоже не работал :(
[ObservableProperty]
[NotifyCanExecuteChangedFor(nameof(GetAlmacenCommand))]
private Almacenes _selectedItem;
[RelayCommand]
public async Task GetAlmacen()
{
await AppShell.Current.DisplayAlert("Error", "TESTING", "OK");
}





Вы можете попробовать использовать пакет CommunityToolkit.Maui для преобразования события ItemSelected ListView в команду.
В xaml:
xmlns:toolkit = "http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
<ListView ItemsSource = "{Binding Almacenes}" HasUnevenRows = "True" SelectedItem = "{Binding SelectedItem Mode=TwoWay}" >
.....
<ListView.Behaviors>
<toolkit:EventToCommandBehavior
EventName = "ItemSelected"
Command = "{Binding GetAlmacen}" />
</ListView.Behaviors>
</ListView>
И вы можете получить данные SelectedItem из _selectedItem;, потому что вы установили SelectedItem = "{Binding SelectedItem Mode=TwoWay}".
Вы можете попробовать решение в моем ответе.