2017-10-11 1 views
0

Ich habe ein größeres PowerShell-Skript, das XAML-Code importiert. Hier ist ein Teil des Codes:MenuItem-Klick funktioniert nur, wenn auf untergeordnetes Element geklickt wird

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!"  
}) 

Das Problem ist, dass der oben Powershell-Code wird nur läuft, wenn eines der untergeordneten Elemente geklickt wird, nicht wenn $ menuFile angeklickt wird. Ich habe geschaut und geschaut und kann nicht verstehen, warum das passiert und wie ich es beheben kann.

Vielen Dank.

+0

Nur um klar zu sein, Sie wollen '$ txtInput.Text =" Es hat funktioniert! "' zu geschehen, sobald das Menü ist initiiert, aber das aktuelle Verhalten ist, dass es passiert, wenn eine der Menüoptionen ausgewählt ist, oder? – TheMadTechnician

+0

Korrekt. Ich benutze den $ txtinput nur als Test, um zu bestätigen, dass es funktioniert. Was ich gerne tun würde, ist update $ txtInput, wenn ich auf den Menüpunkt Datei klicke. Was tatsächlich passiert ist, passiert nichts, wenn ich auf den Menüpunkt Datei klicke, aber wenn ich auf eines der untergeordneten Elemente klicke (wie History oder Close), aktualisiert es $ txtinput. –

Antwort

1

Sie suchen nach einem anderen Ereignishandler als Klick. Sie wollen GotFocus oder so etwas wie that.Try diese stattdessen

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

Sie alle Ereignisse überprüfen können Sie Ereignishandler durch Rohrleitungen zu Get-Member als solche hinzufügen: für

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

Dann schauen Sie die methodsJust für Kicks habe ich versucht, diese, und es funktionierte wie erwartet:

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

Dann, wenn ich im Menü Datei auf die Schriftgröße für sie angeklickt und seine Kinder bekamen größer, aber wHE n Ich wechselte in ein anderes Menü oder klickte die Schriftgröße zurück auf Schriftgröße 12.

Verwandte Themen