1

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

例如,假设模式可能只是离线,例如在线。因此,当离线时,您希望配置条目控件处于活动状态,但是一旦处理开始(在线),那么您希望这些控件变为灰色。

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

谢谢

4

1 回答 1

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)
}

当然,如果您的模式是布尔值,例如在线/离线。那么您可以简单地以相同的方式包装该值。

当然,这种方法存在各种可伸缩性问题并且对类有很大限制,但我发现它在某些场景中很有用。

于 2010-09-07T04:36:17.917 回答