Начиная с 1.8.5, можно запечатать и заморозить объект, поэтому определите вышеизложенное как:
var DaysEnum = Object.freeze({"monday":1, "tuesday":2, "wednesday":3, ...})
или
var DaysEnum = {"monday":1, "tuesday":2, "wednesday":3, ...}
Object.freeze(DaysEnum)
и вуаля! JS перечисляет.
Примечание: я написал это в 2011 году, но это 2019 - используйте const
для предотвращения перезаписи вашего словаря enum.
Тем не менее, это не мешает вам присвоить нежелательное значение переменной, что часто является главной целью перечислений:
let day = DaysEnum.tuesday
day = 298832342 // goes through without any errors
Один из способов обеспечить более высокую степень безопасности типов (с перечисления или иным образом) использовать такой инструмент, как TypeScript или Flow .
Цитаты не нужны, но я сохранил их для согласованности.
Ответ таков:
<DataTemplate x:Key="CodeGenerationMenuTemplate">
<MenuItem
Header="{Binding Title}"
Command="{Binding DataContext.SwitchPageCommand,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Menu}}}"
CommandParameter="{Binding Title}"/>
</DataTemplate>
Я только что увидел, что Нир дал мне синтаксис для решения указанной выше проблемы по этому вопросу: Как лучше всего в MVVM создать меню, отображающее различные страницы? .