当前位置:  开发笔记 > 编程语言 > 正文

在WPF窗口中禁用除一个子控件之外的所有子控件

如何解决《在WPF窗口中禁用除一个子控件之外的所有子控件》经验,为你挑选了2个好方法。

我的窗户上有一堆控件.其中一个是刷新按钮,它在后台线程上执行繁琐的任务.

当用户单击刷新按钮时,我将光标置于等待(沙漏)状态并禁用整个窗口 - Me.IsEnabled = False.

我想通过让用户点击取消按钮来支持取消刷新操作,但是在整个窗口被禁用时我无法做到这一点.

有没有办法这样做除了逐个禁用每个控件(取消按钮除外),然后在用户点击取消时逐个重新启用它们?



1> Abe Heidebre..:

您可以将所有控件放在一个面板(Grid,StackPanel等)中,并将取消按钮保留在另一个面板中.然后设置其他面板的IsEnabled属性.

在实践中,这可能会引入多个额外的面板.

例如,如果您有StackPanel按钮,则可以添加其他StackPanel:


    
        
    
    

然后,您将执行以下操作以禁用除取消按钮之外的所有内容:

controlContainer.IsEnabled = false;



2> 小智..:

我还希望用户能够取消加载.我发现了一个可爱的解决方

foreach (Control ctrl in this.Controls)
    ctrl.Enabled = false;

CancelButton.Enabled = true;

这也允许选择和移动主窗口,而不像this.Enabled = false; 完全锁定窗口.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有