我是 WPF 新手,正在浏览 .net 4.5 中的专业 WPF 示例。在命令章节中,有一个示例,多个控件可以发送相同的命令。我正在使用 Button、CheckBox 和 MenuItem 来触发 New 命令。
我面临的问题是,如果第一次按下 MenuItem,源显示正确。但是,单击 Button 或 CheckBox 后,单击 MenuItem 会显示最后一个控件 Button 或 CheckBox 的来源,以按下者为准。我找不到我的代码有什么问题,或者为什么 WPF 中的 MenuItem 会显示这种行为。
下面是代码。
<Window x:Class="WpfApplication1.CommandSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CommandSample" Height="300" Width="300">
<Window.CommandBindings>
<CommandBinding Command="New" Executed="CommandBinding_Executed" />
</Window.CommandBindings>
<StackPanel>
<Button Command="New" MaxWidth="80" MaxHeight="30" Content="{x:Static ApplicationCommands.New}" />
<Menu MaxHeight="30" VerticalAlignment="Top">
<MenuItem Header="File">
<MenuItem Command="New"></MenuItem>
</MenuItem>
</Menu>
<CheckBox Command="New"></CheckBox>
</StackPanel>
</Window>
namespace WpfApplication1 {
public partial class CommandSample: Window {
public CommandSample() {
InitializeComponent();
}
private void CommandBinding_Executed(object sender,ExecutedRoutedEventArgs e)
{
MessageBox.Show("New Command launched by " + e.Source);
}
}
}