实现基于窗口当前状态/模式的控制行为的最佳方式(在WPF应用程序中,C#)是什么?
例如,假设模式可能只是OFFLINE,ONLINE等。因此,当OFFLINE您希望配置条目控件处于活动状态时,但是一旦处理开始(ONLINE),您就希望这些控件变灰。
有任何建议重新模式/方法来管理这个吗?我想知道是否有最好的发布/订阅方法,或者只是创建一个像“SetStatus”这样的辅助方法,并从这里调用所有控件。
感谢
答案 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。然后你可以用同样的方式包装那个值。
这种方法当然有各种可扩展性问题,并且具有相当的类限制性,但我发现它在某些情况下很有用。