Entwickler-Ecke

WPF / Silverlight - WPF - TaskbarIcon - Commands


Raven280438 - Mo 22.09.14 10:49
Titel: WPF - TaskbarIcon - Commands
Hi,

ich versuche ein Programm mit einem Taskbar-Icon zu erstellen (WPF NotifyIcon Control [http://www.codeproject.com/Articles/36468/WPF-NotifyIcon])

Hier der xaml Code für das Window:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:tb="http://www.hardcodet.net/taskbar"
                    xmlns:local="clr-namespace:MyApp">
    
    <ContextMenu x:Shared="false" x:Key="MyContextMenu">
        <MenuItem Name="ExitApplication" Header="Beenden" />
    </ContextMenu>
    
    <tb:TaskbarIcon x:Key="MyNotifyIcon"
                    IconSource="/MyApp;component/Resources/exe-icon-48x48.ico"
                    ContextMenu="{StaticResource MyContextMenu}">

    </tb:TaskbarIcon>

</ResourceDictionary>


Wie kann ich den MenuItems jetzt Methoden der Hauptklasse (MyApp) zuordnen?
In den Beispielen dich ich gefunden habe, wurde mit ICommand gearbeitet, aber daraus werde ich nicht schlau...

Kann mir jemand Helfen?



Gruß


OlafSt - Mo 22.09.14 12:22

Die Sache mit den Commands ist nötig, wenn du das ganze via MVVM aufbauen willst. Dadurch wird die Benutzeroberfläche vollkommen vom Programmcode (der Business Logic) getrennt.

Wenn das nicht unbedingt der Fall sein soll, dann sollte

XML-Daten
1:
<MenuItem Name="ExitApplication" Header="Beenden" Click="ExitApplication_Click"/>                    


erstmal genügen.


Raven280438 - Mo 22.09.14 13:01

Hi,

das hatte ich schon probiert.

Wenn ich ein Click-Attribut hinzufüge bekomme ich beim Compilieren die Meldung
Zitat:

Für das Stammelement "ResourceDictionary" ist ein x:Class-Attribut erforderlich, damit Ereignishandler in der XAML-Datei unterstützt werden. Entfernen Sie entweder den Ereignishandler für das Click-Ereignis, oder fügen Sie dem Stammelement ein x:Class-Attribut hinzu.


Wenn ich ein

XML-Daten
1:
2:
3:
4:
5:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:tb="http://www.hardcodet.net/taskbar"
                    xmlns:local="clr-namespace:MyApp"
                    x:class="MyNS.MyApp">

hinzufüge bekomme ich die Meldung
Zitat:

Der Typ 'MyNS.MyApp' definiert bereits einen Member namens 'InitializeComponent' mit den gleichen Parametertypen.



Was mach ich falsch?


Gruß