2016-02-09 3 views
2

Я новичок в программировании Windows Universal. Решил использовать Tmeplate10 для создания моего первого приложения. Я хотел бы знать, что лучше всего получить, чтобы получить текущее имя визуального состояния в View Model.Визуальное название штата в ViewModel Best Practice

в код XAML я использовал:

VisualState vs = AdaptiveVisualStateGroup.CurrentState; 
if (vs != null) 
{ 
    string actualStateName = vs.Name 
} 

Что лучший способ получить то же самое в ViewModel?

ответ

2

Пожалуйста, не пытайтесь возиться с визуальным состоянием в вашей модели вида. Подумайте об этом, ваша модель просмотра существует для обработки базовых данных, необходимых для вашего представления. Это не то же самое, что представить данные в вашем представлении. С другой стороны, ваше мнение имеет логику представления данных - и делать это с различными визуальными состояниями на основе определенных триггеров. Эти триггеры - это визуальные триггеры, а не триггеры данных. По этой причине вы должны обрабатывать визуальные состояния в представлении и скрытый код для представления.

Если данные влияют на представление, например, если пользователь неожиданно выходит из системы или что-то в этом роде, то это тоже свойство (например, IsLoggedIn) в вашей модели представления, которое используется вашим представлением для изменения визуального состояния. Если вы пытаетесь получить ссылку на визуальное состояние в своей модели представлений, вы являетесь своего рода коротким замыканием намерения MVVM.

Это, как говорится, я не разработчик вашего приложения. И код, который вы показываете, является единственным способом надежно получить текущее визуальное состояние. Стоит отметить, что более одного визуального состояния может быть одновременно активным в нескольких группах визуальных состояний. Как вы могли бы запустить код, который вы предоставили, без прямой ссылки на класс группы визуальных состояний в вашем режиме просмотра? Как его получить?

Page.OnNavigatedTo() { ViewModel.Group = AdaptiveVisualStateGroup; } как.

Но я надеюсь, что вы рассмотрите остальную часть ответа.

 Смежные вопросы

  • Нет связанных вопросов^_^