Windows Phone 8.1 - MVVMLight - Почему не работает EventToCommad?
Я не могу использовать EventToCommand в моем приложении для Windows Phone 8.1.
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP8"
Я пробовал это также со сборкой =GalaSoft.MvvmLight.Extras.WP81...
<controls:PivotItem Name="pivotItem">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding SelectServiceCommand}"
CommandParameter="{Binding SelectedIndex, ElementName=pivotItem}"/>
</i:EventTrigger>
<!-- other stuff -->
</i:Interaction.Triggers>
Я получаю следующие ошибки:
- Член "Триггеры" не распознан или недоступен.
- Неизвестный тип 'EventTrigger' в пространстве имен XML 'clr-namespace:System.Windows.Interactivity; Assembly=System.Windows.Interactivity'
- Ошибка 2 Встраиваемое свойство "Триггеры" не найдено в типе "Взаимодействие"....
Может кто-то помочь мне, пожалуйста?
3 ответа
Вы нацелены на Silverlight или WinRT (универсальные приложения) для Windows Phone 8.1?
Если вы выбрали второй вариант, то в этом сообщении в блоге автор MVVM Light объясняет отсутствие поддержки EventToCommand - в основном в WinRT уже есть механизм, похожий на EventToCommand - Поведения.
Windows Phone 8.1
Microsoft разработала собственную функциональность EventToCommand. Он находится в SDK Behaviors. Кто-то на stackru сказал, чтобы получить этот SDK через Nuget. Если вы не можете найти пакет в NuGet - получите его в Add reference dialog
,
(Мой диалог "Добавить ссылку" может отличаться от оригинала из-за Productivity Power Tools
расширение)
Вот пример простого использования:
<ListBox ItemsSource="{Binding Persons, Mode=OneWay}"
SelectedItem="{Binding SelectedPerson, Mode=TwoWay}">
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="SelectionChanged">
<core:InvokeCommandAction Command="{Binding DisplayPersonCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</ListBox>
При обновлении моего приложения WP8.0 для использования MVVMLight 5.0+ отключено поведение EventToCommand, мой поиск решения привел меня к этому сообщению в блоге, в котором содержался исходный код для реализации пользовательского командного действия, в котором в качестве параметра передавались бы аргументы событий. Реализация кода вернула мое приложение в рабочее состояние!!
Надеется, что это поможет вам:D