2010-02-28 60 views
4

當我禁用WPF控件,好比說像WPF啓用/禁用控制

MenuItem aMenuItem = ... 
aMenuItem.IsEnabled = false; 

菜單項中的菜單項的文本仍然有效,也就是說它不是變灰正如你所期望的時候項目被禁用。

是否有一種簡單的方法可以做到這一點,不僅適用於菜單項,而且適用於任何WPF控件?

回答

6

是通過使用命令。 MenuItems和Buttons有一個命令屬性。 Command是ICommand接口的一個實現,它有一個名爲CanExecute的方法。如果返回true,則可以調用執行時,啓用menutitem或按鈕,否則它將變爲灰色。

MSDN Command overview

nice simple tutorial on setting up commands

google search :)

+0

我安裝使用命令的菜單項,當CanExecute方法設置爲false時,它仍然不會變灰 。 謝謝 – TheWommies 2010-02-28 22:27:14

+1

你在菜單項上有自己的風格嗎?如果你有可能重寫默認的灰色實現。當你點擊應該變灰的菜單項時,命令的執行方法會失敗嗎? – 2010-03-01 00:01:10

+2

非常感謝,我有一個標記TextBlocks的全局樣式,所以我可以更改應用程序中所有TextBlocks的顏色。看來MenuItems在其可視化樹中有TextBlocks。 不知道如何解決這個問題,所以我有兩全其美的好處,我可以改變所有的文本顏色,並確保它們在被禁用時變灰。 我假設我必須編寫一個控件模板,然後爲此設置MenuItems。 謝謝 – TheWommies 2010-03-01 22:57:41

-5

你也可以設置控件的不透明度爲0.5,得到了爲 「灰色」 效應

相關問題