实现基于窗口当前状态/模式的控制行为的最佳方式是什么(在 WPF 应用程序中,C#)?
例如,假设模式可能只是离线,例如在线。因此,当离线时,您希望配置条目控件处于活动状态,但是一旦处理开始(在线),那么您希望这些控件变为灰色。
对管理此问题的模式/方法有什么建议吗?我想知道是否有最好的发布/订阅方法,或者只是创建一个像“SetStatus”这样的辅助方法并从这里调用所有控件。
谢谢
我会将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)
}
当然,如果您的模式是布尔值,例如在线/离线。那么您可以简单地以相同的方式包装该值。
当然,这种方法存在各种可伸缩性问题并且对类有很大限制,但我发现它在某些场景中很有用。