#windows-phone-7 #enums #caliburn.micro
#windows-phone-7 #перечисления #caliburn.micro
Вопрос:
Я новичок в Caliburn Micro и экспериментирую с его реализацией WP7. Я хотел бы передать значение enum с одной виртуальной машины на другую, но, должно быть, я упускаю что-то очевидное: я пытался передать его имя и числовое значение, но целевая виртуальная машина всегда получает значение по умолчанию (соответствующее 0).
Мой сценарий более подробно: скажем, у меня есть виртуальная машина со свойством, предоставляющим значение enum. Допустим, перечислением является ProductFamily {Аппаратное обеспечение, программное обеспечение}; У меня есть кнопка, которая открывает другой экран с базовой виртуальной машиной, которая должна отображать список продуктов в соответствии с выбранным семейством. Таким образом, виртуальная машина вызывает Navigate для экземпляра INavigationService, полученного в ее конструкторе, например:
_navigation.Navigate("MyView.xaml?Family=" _nFamily, UriKind.RelativeOrAbsolute);
(этот код передает имя, но я пробовал также с помощью (int)_nFamily). Теперь у меня есть соответствующее семейное свойство в целевой виртуальной машине, например
public ProductFamily Family { get { ... } set { ... } }
если я помещаю точку останова в параметр настройки свойств, я вижу, что она вызывается с помощью CM, но полученное значение соответствует значению по умолчанию (0, скажем, аппаратное обеспечение в примере выше), в то время как я ожидаю другого. Я могу подтвердить, что при создании строки запроса для навигации передается правильное значение. Итак, как происходит, что целевая виртуальная машина получает неверное значение?
Спасибо всем
Ответ №1:
Похоже, это может быть ошибкой в логике преобразования значений. Можете ли вы создать запрос на проблему на сайте проекта и прикрепить простой образец, демонстрирующий проблему? Если это так, я, вероятно, смогу исправить это относительно быстро.
Комментарии:
1. Спасибо, это была ошибка, вот ее решение: caliburnmicro.codeplex.com/SourceControl/changeset/changes /…