WPF应用程序 - 如何处理窗口中控件的模式/状态?

时间:2010-09-07 03:53:28

标签: c# .net wpf status

实现基于窗口当前状态/模式的控制行为的最佳方式(在WPF应用程序中,C#)是什么?

例如,假设模式可能只是OFFLINE,ONLINE等。因此,当OFFLINE您希望配置条目控件处于活动状态时,但是一旦处理开始(ONLINE),您就希望这些控件变灰。

有任何建议重新模式/方法来管理这个吗?我想知道是否有最好的发布/订阅方法,或者只是创建一个像“SetStatus”这样的辅助方法,并从这里调用所有控件。

感谢

1 个答案:

答案 0 :(得分: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)
}

当然,如果您的Mode是布尔值,例如ONLINE / OFFLINE。然后你可以用同样的方式包装那个值。

这种方法当然有各种可扩展性问题,并且具有相当的类限制性,但我发现它在某些情况下很有用。