Мы проверили сообщенный запрос «События во ViewModel при использовании PRISM» с нашей стороны. Вы можете выполнить свои требования, используя класс EventToCommandBehavior, доступный в библиотеке призмы.
Фрагмент кода: C #: Команда для определения события во ViewModel.
public class MainPageViewModel : BindableBase, INavigationAware
{
private Command<ItemSelectionChangedEventArgs> selectionChangedCommand;
public Command<ItemSelectionChangedEventArgs> SelectionChanged
{
get { return selectionChangedCommand; }
set { selectionChangedCommand = value; }
}
public MainPageViewModel()
{
SelectionChanged = new Command<ItemSelectionChangedEventArgs>(OnSelectionChanged);
}
private void OnSelectionChanged(ItemSelectionChangedEventArgs eventArgs)
{
}
}
# Конвертер EventArgs возвращает ItemSelectionChangedEventArgs при выполнении команды
public class EventArgs : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
object eventArgs = null;
if (value is Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs)
eventArgs = value as Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs;
return eventArgs;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Фрагмент кода: XAML: EventToCommandBehavior связывает команду ViewModel с событием SfListView SelectionChanged в поведении.
xmlns:behvaior="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
<ContentPage.Resources>
<ResourceDictionary>
<local:EventArgs x:Key="eventArgs" />
</ResourceDictionary>
</ContentPage.Resources>
<listView:SfListView x:Name="listView" ItemSize="70"
ItemsSource="{Binding ContactsInfo}">
<listView:SfListView.Behaviors>
<behvaior:EventToCommandBehavior EventName="SelectionChanged"
EventArgsConverter="{StaticResource eventArgs}"
Command="{Binding SelectionChanged}"/>
</listView:SfListView.Behaviors>
</listView:SfListView.ItemTemplate>
</listView:SfListView>
Мы приложили образец для справки. Вы можете скачать то же самое из следующего местоположения
Ссылка: http://www.syncfusion.com/downloads/support/directtrac/general/ze/ListViewPrismMust1198452680
Вы можете создать кнопку в своем шаблоне, если вы хотите какое-либо конкретное действие, которое должно работать, когда вы нажимаете одну кнопку. Это не хак. Вы также можете настроить на основе элемента.