2013-08-04 10 views
1

Что я имею в виду: предположим, что на ViewModel есть объекты IsCompliant и ShowWarning. Пользовательский интерфейс имеет некоторое сообщение, связанное с ShowWarning, и если ViewModel не соответствует требованиям, наряду с некоторыми другими условиями, мы хотим показать предупреждение. Итак, я кодирование это следующим образом:Есть ли способ зарегистрировать, что одно свойство зависит от другого?

private bool mbIsCompliant; 
    public bool IsCompliant 
    { 
     get { return mbIsCompliant; } 
     set 
     { 
      mbIsCompliant = value; 

      RaisePropertyChanged (() => IsCompliant); 
      RaisePropertyChanged (() => ShowWarning); 
     } 
    } 

    public bool ShowWarning 
    { 
     get { return !IsCompliant && [other conditions]; } 
    } 

Обратите внимание, что двойной RaisePropertyChanged вызова в инкубаторе для IsCompliant, чтобы вызвать обновление для зрения, связанного с ShowWarning. Но для меня это чувствует, потому что у каждого свойства есть разбрызгивание этих вызовов во всей ViewModel.

Что бы я хотел, это способ иметь таблицу зависимостей, которую я могу зарегистрировать в конструкторе, и MVVMCross отслеживает тот факт, что если свойство А изменилось, тогда свойство B также изменилось и так далее. Таким образом, каждое свойство отслеживает себя, а класс в целом управляет зависимым отношением между свойствами.

Есть ли это? Это разумная идея, или есть лучший способ достичь моей цели?

ответ

1

Там нет «один пути», чтобы сделать это, но некоторые люди экспериментировали с различными методами, включая общий INotifyPropertyChanged перехват, некоторые атрибуты на основе расширения и некоторых Aspect Oriented метода программирования

Для некоторых примеров и информации о них, см:

+0

Ничего себе, это очень много, чтобы ассимилироваться. Я проработаю через эти ссылки и посмотрю, что мне кажется лучше всего. Благодаря! –

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