WPF启用/禁用控件

7
当我在WPF中禁用控件,例如菜单项时,如下所示:
MenuItem aMenuItem = ...
aMenuItem.IsEnabled = false;

菜单项中的文本仍然是活动的,也就是说它没有像禁用的项目一样变灰。

是否有一种简单的方法可以实现这一点,不仅适用于菜单项,而且适用于任何WPF控件?

2个回答

7

通过使用命令可以实现。MenuItems和Buttons都有一个command属性。Command是ICommand接口的实现,它有一个叫做CanExecute的方法。当调用can execute时,如果返回true,则menutitem或button将启用,否则将变灰。

MSDN命令概述

关于设置命令的简单教程

谷歌搜索 :)


我使用命令设置了菜单项,但当CanExecute方法设置为false时,它仍然没有变灰。 - TheWommies
1
你的菜单项有自己的样式吗?如果有,你可能会覆盖默认的灰色实现。当你点击应该被禁用的菜单项时,命令的执行方法是否触发? - Aran Mulholland
2
谢谢,基本上就是这样了。我有一个全局样式,它针对TextBlocks,所以我可以更改应用程序中所有TextBlock的颜色。菜单项似乎在其可视树中具有TextBlocks。不确定如何解决这个问题,使得在我既能更改所有文本颜色又确保禁用时它们变灰色的情况下最好。我想我必须编写一个控件模板来针对菜单项实现这个功能。谢谢 - TheWommies

-6

你也可以将控件的不透明度设置为0.5,以获得“灰色失效”效果


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接