2010-09-07 3 views
1

Каков наилучший способ (в приложении WPF, C#) реализовать поведение управления, основанное на текущем статусе/режиме для окна?WPF app - как обрабатывать режимы/статусы элементов управления в окне?

Например, например, режимы могут быть просто OFFLINE, ONLINE, например. Поэтому, когда OFFLINE вы хотите, чтобы элементы управления конфигурацией были активными, однако, как только начинается обработка (ONLINE), вы хотите, чтобы эти элементы управления были недоступны.

Любые предложения по шаблону/подходу к управлению этим? Мне интересно, есть ли подход публикации/подписки, который был бы лучше всего, или просто создать вспомогательный метод, например «SetStatus», и сделать все вызовы для управления здесь.

благодаря

ответ

3

Я бы связать IsEnabled свойства независимо содержит ваши настройки управления входа в логическое значение, которое инспектирует состояние/текущий режим.

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

//Assumes your mode enum is defined and named WindowModes 
private WindowModes m_CurrentMode; 
public WindowModes 
{ 
    get { return m_CurrentMode; } 
    set 
    { 
     m_CurrentMode = value; 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs("CanConfigure")); 
    } 
} 

public bool CanConfigure 
{ 
    return(WindowMode == WindowModes.Online) 
} 

Конечно, если ваш режим IS булево, такие как онлайн/оффлайн. то вы можете просто обернуть это значение таким же образом.

Этот подход, конечно, имеет различные проблемы с масштабируемостью и довольно ограниченный класс, но я нашел его полезным в некоторых сценариях.

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