首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从放置在主窗口应用程序内的页面启用/禁用WPF控件

从放置在主窗口应用程序内的页面启用/禁用WPF控件
EN

Stack Overflow用户
提问于 2010-03-23 19:49:36
回答 2查看 1.2K关注 0票数 0

我有一个有主窗口的WPF应用程序。在此窗口的左侧有一些按钮进入列表框,这是一种菜单,可以更快地访问页面。这些按钮属于当用户选择一个按钮时在窗口中加载的页面。

主窗口顶部还有另一个主菜单,用于执行其他任务。

当在主窗口中加载一个页面时,用户单击当前加载的页面上的一个按钮,就会启动一个耗时很长的任务。当这个长任务正在执行时,我希望用户不能选择(或按下)列表框中的任何按钮,因为在加载的页面中,长任务也在更新此页面的UI。我想在执行长任务时禁用(isEnabled=false)列表框,并且在长任务完成之前不启用它。我该怎么做呢?我的意思是,从当前加载的页面,我想禁用放置在主窗口中的列表框,即所有者。

列表框不属于当前加载的页面。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2010-03-23 20:39:53

正确的做法是为你的按钮实现一个自定义命令(ICommand)。然后,可以将按钮上的command属性设置为自定义命令。当命令正在执行时,即在Execute方法中,您可以将_isRunning字段设置为true,然后在CanExecute实现中,您可以根据_isRunning返回一个值:例如...

public class YourButtonCommand : ICommand {

...

代码语言:javascript
复制
public void Execute
{
    _isRunning = true
     ... do your window loading here
    _isRunning = false;
}

public bool CanExecute(object parameter)
{
    return !_isRunning;
}

....

}

WPF will take care of disabling the button if your command is implemented right or you can implement a DataTrigger on your control to dissable it based on the state of the command. For information about how your command code should be implemented please check out Josh Smiths MVVM article

票数 1
EN

Stack Overflow用户

发布于 2010-03-31 03:10:47

最后,我学会了如何使用I命令。在花了很多时间之后,我看到了它的强大之处,我将我想要重新启用/禁用的所有可点击控件绑定到命令,当长任务(后台工作进程)正在进行时,使用canBeExecute的命令会返回false。我已经实现了一个命令静态类来检查是否有一个后台工作者(长任务)正在运行,并在其中实现了一个方法,该方法根据是否有一个任务正在运行而返回true或false。所以在canExecuted方法中,我通过访问放在类中的方法来检查这一点。

谢谢你的好主意!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2499560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档