[英]RoutedCommand defaults to cannot execute
我在上下文菜單中使用自定義 RoutedCommand。 命令定義如下:
public static readonly RoutedCommand RoutedAddMainHeading = new RoutedCommand();
它的訪問方式如下:
<ContextMenu>
<MenuItem Header="Add Main Heading" Command="local:JurisdictionVM.RoutedAddMainHeading" />
</ContextMenu>
它工作正常,除非我的程序啟動時,該命令被禁用。 在我單擊 window 中的文本框后,它變為啟用狀態。
如果我使用自定義 ICommand 實現(CanExecute 始終返回 true),則不會發生這種情況,但不會路由該命令。
我試圖調用 CommandManager.InvalidateRequerySuggested 但這似乎沒有任何作用。
我正在使用命令接收器來定義命令綁定並將其鏈接到我的 ViewModel,這可能會導致問題。 我正在使用在這里找到的實現: http://www.codeproject.com/KB/WPF/VMCommanding.aspx
更新:看起來自定義命令綁定不是問題。 我嘗試了一個鏈接到代碼隱藏方法的標准 CommandBinding 並且遇到了同樣的問題。 CommandBinding 的定義如下:
<CommandBinding Command="local:JurisdictionVM.RoutedAddMainHeading" CanExecute="Foo_CanExecute" Executed="Foo_Executed"/>
這似乎是 ManuItem 獨有的問題。 如果我在按鈕中使用此命令,則沒有此問題。
是否有另一種方法可以強制重新評估 CanExecute?
還是一種讓 RoutedCommand 默認啟用的方法(或一種編寫自定義命令的方法)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.