簡體   English   中英

RoutedCommand 默認無法執行

[英]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 默認啟用的方法(或一種編寫自定義命令的方法)?

看起來這與此處的問題相同:

為什么禁用此 WPF RoutedCommand 綁定上下文菜單項?

解決方案是在 window 構造函數中設置焦點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM