2016-04-16 5 views
0

Ich habe gerade angefangen mit WPF, also ertragen Sie mit mir.VB WPF So behandeln Sie ein Klickereignis in einem KontextmenuItem in einem Objekt in einem ResourceDictionary

ich bereit NotifyIcon Ersatz in Visual Basic 2015 (http://www.hardcodet.net/wpf-notifyicon) für WPF gebaut bin mit

ich die Dokumentation gelesen haben (sie sind in C# obwohl ...) und sie zunächst in einem Resource konfiguriert .

<ResourceDictionary    
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="clr-namespace:SystemTrayTest" 
xmlns:tb="http://www.hardcodet.net/taskbar" 
    > 
    <!-- Globally declared notify Icon --> 
    <tb:TaskbarIcon x:Key="MyNotifyIcon" 
       IconSource="/Icons/Error.ico" 
       ToolTipText="Project Activity Recorder" > 
     <tb:TaskbarIcon.ContextMenu> 
    <ContextMenu 
     Background="LightCoral"> 
     <MenuItem x:Name="CA" Header="Current Activity"/> 
     <MenuItem Header="New Activity" /> 
     <MenuItem Header="Manage Activities" /> 
     <Separator /> 
     <MenuItem Header="Manage Companies" /> 
     <MenuItem Header="Manage Projects" /> 
     <MenuItem Header="Manage Users" /> 
     <Separator /> 
     <MenuItem Header="Exit" /> 
    </ContextMenu> 
    </tb:TaskbarIcon.ContextMenu> 
    </tb:TaskbarIcon> 
    </ResourceDictionary> 

Ich trete aus der NotifyIcon, indem sie in Application_Startup Ereignis instanziieren.

tb = CType(FindResource("MyNotifyIcon"), TaskbarIcon) 

Dies zeigt das SystemTray Symbol mit einem Kontextmenü fein.

Allerdings kann ich nicht herausfinden, wie Sie abholen, wenn ein Benutzer aus dem Inhaltsmenü auswählt.

Ich habe in Windows-Formularen vorher programmiert, aber wie ich erwähnt habe WPF ist neu für mich. Ich kann aus einem WPF-Formular herausfinden, wie das geht, aber ich fange an, es zu denken, weil ich das NotifyIcon in dem ResourceDictionary eingerichtet habe.

Ich würde einige freundliche Führung schätzen.

Vielen Dank Alle!

Antwort

0

It is possible für ein ResourceDictionary, um einen Code zurück zu haben. In diesem Fall bezweifle ich jedoch, dass es für Sie nützlich sein wird, weil ich ziemlich sicher bin, dass Sie etwas von Ihrem Fenster brauchen werden.

Wenn das keine Voraussetzung ist, können Sie einfach den Code hinter dem Ressourcenwörterbuch verwenden.

+0

Was ist die Alternative? Programmgesteuert das TB-Objekt in dem Startup-Ereignis konfigurieren? – user3844416

+0

Sie könnten es in das MainWindow selbst anstelle eines ResourceDictionary einfügen. Der Zweck eines Ressourcenwörterbuchs ist die Wiederverwendung. Wenn Sie es erneut verwenden können, können Sie einen Code für das Ressourcenwörterbuch erstellen. Sonst können Sie es in das Fenster selbst legen. –

+0

Danke für Ihren Kommentar. Ich verwende ein Startup-Ereignis, um meine Anwendung zu starten und zu initialisieren, und das hat kein Fenster. Wäre es am besten, ein Fenster zu initialisieren (damit ich das Toolbar-Objekt konfigurieren kann) und das Startup-Ereignis nicht zu verwenden? – user3844416