簡體   English   中英

為什么命令綁定到按鈕的行為與命令綁定菜單項的行為不同?

[英]Why does command binding to a button have different behavior than command binding a menu item?

考慮以下帶有菜單和按鈕的示例:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
  <DockPanel>
    <Menu DockPanel.Dock="Top">
      <MenuItem Header="Paste" Command="ApplicationCommands.Paste" />
    </Menu>
    <Button Command="ApplicationCommands.Paste">Paste</Button>
    <TextBox>Content</TextBox>
    <TextBox>Content2</TextBox>
  </DockPanel>
</Window>

當我將鍵盤焦點放在其中一個文本框中時,TextBox聲明它可以處理ApplicationCommands.Paste ,因此我希望按鈕和菜單項能夠啟用它們。 相反,我得到的是菜單項啟用了它本身,而按鈕沒有啟用。 (該按鈕不會出現被“聽”到TextBoxCommandBinding

這是怎么回事,有什么辦法可以解決這個問題?


編輯:我確實找到了這個問題-> WPF路由命令啟用與菜單一起使用,但不適用於按鈕 <-,但是在這種情況下不適合。 該按鈕不應是鍵盤可聚焦的,將其設置為聚焦范圍可以使其聚焦。 我無法綁定源,因為實際的源需要由鍵盤焦點控制。

除非您將其包含在工具欄中,否則您似乎無法以這種方式使用按鈕的Command屬性。 我得到與使用xaml相同的結果,但是我定期使用相同的代碼將此命令分配給工具欄中的按鈕。

有關更多信息,請參見使用WPF按鈕復制和粘貼命令

編輯:

你是對的。 它與FocusScope有關,有兩種解決方法,如下所示:

WPF路由命令啟用與菜單一起使用,但不適用於按鈕

您可以在按鈕上設置FocusManager.IsFocusScope

<Button Command="ApplicationCommands.Paste" FocusManager.IsFocusScope="True">Paste</Button>

或者,您可以設置按鈕的命令目標,但這僅適用於一個文本框。

暫無
暫無

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

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