MenuItem单击仅在单击子项时有效

时间:2017-10-11 19:39:50

标签: wpf powershell xaml

我有一个更大的PowerShell脚本,它将XAML代码导入其中。这是代码的一部分:

XAML

<Menu x:Name="menu" DockPanel.Dock="Top">
    <MenuItem x:Name="menuFile" Header="File">
        <MenuItem x:Name="menuFile_History" Header="_History"/>
        <MenuItem x:Name="menuFile_Recent" Header="_Recent">
            <MenuItem x:Name="menuFile_Recent1"/>
            <MenuItem x:Name="menuFile_Recent2"/>
            <MenuItem x:Name="menuFile_Recent3"/>
            <MenuItem x:Name="menuFile_Recent4"/>
            <MenuItem x:Name="menuFile_Recent5"/>
        </MenuItem>
        <MenuItem x:Name="menuFile_ShowMore" Header="_Show More"/>
        <MenuItem x:Name="menuFile_FlushDNS" Header="_Flush DNS"/>
        <MenuItem x:Name="menuFile_KillProcess" Header="Kill Process"/>
        <Separator/>
        <MenuItem x:Name="menuFile_Close" Header="_Close"/>
    </MenuItem>
    <MenuItem x:Name="menuEdit" Header="Edit">
        <MenuItem x:Name="menuEdit_ConvertIP" Header="Convert IP" IsCheckable="True" IsChecked="True"/>
    </MenuItem>
    <MenuItem x:Name="menuHelp" Header="Help">
        <MenuItem x:Name="menuHelp_About" Header="About"/>
    </MenuItem>
</Menu>

的PowerShell

$menuFile.Add_Click({
    $txtInput.Text = "It worked!"    
})

问题是上述PowerShell代码仅在单击其中一个子项时运行,而不是在单击$ menuFile时运行。我看了看,但我无法弄清楚为什么会发生这种情况以及如何解决它。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您正在寻找与Click不同的事件处理程序。你想要GotFocus或类似的东西。试试这个

$menuFile.Add_GotFocus({$txtInput.Text = "It worked!"})

您可以通过管道传输到Get-Member来查看可以添加事件处理程序的所有事件:

$menuFile | Get-Member -MemberType Methods -force |?{$_.Name -like 'add*'}

然后只是寻找方法,我尝试了这个,它按预期工作:

$menuFile.Add_GotFocus({$menuFile.FontSize = 16})
$menuFile.Add_LostFocus({$menuFile.FontSize = 12})

然后,当我点击“文件”菜单时,它的字体大小及其子项变大,但当我移动到另一个菜单或点击时,字体大小缩小回字体大小为12。