Привязка MvvmCross и ListBox/ComboBox в WinRT

Мне нужно реализовать событие изменения выбора для списка и полей со списком в приложении WinRT. Я использую MvvmCross, но, насколько мне известно, это проблема WinRT, а не Mvx. System.Windows.Interactivity недоступен для приложений WinRT, поэтому я не могу использовать метод, основанный на i:Interaction.Triggers. Я хотел бы реализовать привязку истинным способом MVVM, не переключаясь на код программной части, чтобы я мог повторно использовать как можно больше на других платформах. Каков разумный подход к его реализации в приложении WinRT? Я не нашел примеров в образцах MvvmCross.

заранее спасибо


person Vagif Abilov    schedule 18.01.2013    source источник


Ответы (2)


Я думаю, что это общая проблема с Mvvm на WinRT.

По какой-то неизвестной причине Microsoft не включила Behaviors в WinRT. (Есть такие теории, как тот факт, что у них не хватило времени, они не хотели этого из-за изменений в Expression Blend и т. д.)

Было довольно много сообщений в блогах и статей о том, как обойти это — большая часть из них сосредоточена на превосходной библиотеке Йоста ван Шайка:

Я сам этого не делал - я стараюсь не использовать SelectionChanged, а вместо этого помещать ICommands в каждый ListItem. Если у вас заработает библиотека Joost, я бы хотел увидеть образец :)

person Stuart    schedule 18.01.2013
comment
Спасибо, Стюарт, я проверю библиотеку Джуста. Кстати, у вас есть пример вашего подхода с размещением ICommand в каждом элементе списка? Как это будет работать, если список строится динамически? - person Vagif Abilov; 18.01.2013

Если вы ищете поведение в WinRT с MvvmCross, теперь вы можете использовать для него пакет nuget Windows.UI.Interactivity (https://nuget.org/packages/Windows.UI.Interactivity).

При использовании его с MvvmCross я сделал копию существующего класса MvxEventToCommand с небольшими изменениями (наследуется от TriggerAction(FrameworkElement) вместо TriggerAction(DependencyObject)). Работает как шарм.

person GitteTitter    schedule 23.02.2013