2017-10-11 33 views
0

我有一個更大的PowerShell腳本,它將XAML代碼導入到它中。下面是部分代碼:MenuItem點擊僅在點擊子項時有效

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被點擊時。我看了看,我無法弄清楚爲什麼會發生這種情況,以及如何解決這個問題。

非常感謝。

+0

要清楚,你希望'$ txtInput.Text =「它工作!」'只要菜單是啓動,但目前的行爲是,它發生在其中一個菜單選項被選中,對吧? – TheMadTechnician

+0

正確。我正在使用$ txtinput作爲測試來確認它的工作原理。當我點擊文件菜單項時,我想要發生的是更新$ txtInput。實際發生的事情是,當我點擊文件菜單項時沒有任何反應,但是當我點擊其中一個子項時(例如歷史或關閉),它會更新$ txtinput。 –

回答

1

您正在尋找與Click不同的事件處理程序。你想要的GotFocus或類似that.Try這個代替

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

您可以檢查出所有你可以通過管道事件處理程序添加到事件中來Get-Member這樣:

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

接着尋找踢的methodsJust我想這一點,和它的工作如預期:

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

然後當我在文件菜單上單擊字體大小爲它和它的孩子們得到了較大,但磨片ñ我搬到了不同的菜單或點擊了字體大小縮小回到字體大小12.