Ich habe einen Bilderordner mit einem PNG drin. Ich möchte ein MenuItem-Symbol auf dieses PNG setzen. Wie schreibe ich das in prozeduralen Code?WPF Einstellung einer MenuItem.Icon in Code
Antwort
menutItem.Icon = new System.Windows.Controls.Image
{
Source = new BitmapImage(new Uri("images/sample.png", UriKind.Relative))
};
<MenuItem>
<MenuItem.Icon>
<Image>
<Image.Source>
<BitmapImage UriSource="/your_assembly;component/your_path_here/Image.png" />
</Image.Source>
</Image>
</MenuItem.Icon>
</MenuItem>
So stellen Sie sicher, dass Ihr Bild in auch in der Projektdatei enthalten und als Ressource markiert, und Sie sind gut zu gehen :)
Original-Frage war für Verfahrenscode. Ich glaube auch an XAML, dass Sie '
+1 schreiben können, um den richtigen Weg zu zeigen ... XAML Weg ... um es zu tun. @Neil, +1 an Sie und ich bearbeitet zu Ihrem Vorschlag, wie das ist der richtige Weg, es zu tun –
Nur weil es in XAML getan wird, macht es nicht unbedingt den richtigen Weg. –
Dies ist, wie ich es verwendet (so es nicht werden müssen, in die Baugruppe eingebaut):
MenuItem item = new MenuItem();
string imagePath = "D:\\Images\\Icon.png");
Image icon = new Image();
icon.Source= new BitmapImage(new Uri(imagePath, UriKind.Absolute));
item.Icon = icon;
Arcturus Antwort ist gut, weil es bedeutet, dass Sie die Bilddatei in Ihrem Projekt und nicht als unabhängige Ordner.
in Code So, das wird ...
menutItem.Icon = new Image
{
Source = new BitmapImage(new Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))
}
Sie können auch Ihr Visual Studio verwenden, um ein Symbol einzufügen. Dies ist der einfachste Weg,
- Rechtsklick auf Sie in der Lösung Explorer Project
- Eigenschaften wählte
- Stellen Sie sicher, dass in der Anwendungsseite sind.
- @ recources Sie sehen: Icon und Manifest
- @ Icon: Klicken Sie auf Durchsuchen und wählen Sie Ihr Symbol.
Problem gelöst.
Dies funktioniert für WinForms. Die Frage war, wie man es manuell aus dem Code einstellt. – alexandrudicu
Für die von Ihnen vb.net verwenden, das Sie diese verwenden müssen zu tun: menuItem.Icon = New Image() With {.Source = New BitmapImage(New Uri("pack://application:,,,/your_assembly;component/yourpath/Image.png"))}
Das ist ein bisschen kürzer: D
<MenuItem Header="Example">
<MenuItem.Icon>
<Image Source="pack://siteoforigin:,,,/Resources/Example.png"/>
</MenuItem.Icon>
</MenuItem>
Dies ist, was für mich
gearbeitet<MenuItem Header="delete ctrl-d" Click="cmiDelete_Click">
<MenuItem.Icon>
<Image>
<Image.Source>
<ImageSource>Resources/Images/delete.png</ImageSource>
</Image.Source>
</Image>
</MenuItem.Icon>
</MenuItem>
Das hat uns enorm geholfen. Wir mussten zuerst ein Image erstellen, dann die Quelle dieses Image der BitMapImage zuweisen und dann menuItem.Icon = Image-Objekt, aber es funktionierte. – ScottG
Wie @Scott angibt, fehlt dem Beispielcode ein entscheidendes Detail: 'menutItem.Icon = new System.Windows.Controls.Image {Source = neues BitmapImage (neues Uri (" images/sample.png ", UriKind.Relative)) }; ' – Neil
Ich bearbeitet die Antwort, so dass neue Besucher auf diese Frage funktioniert Code für den Fall, dass sie diesen Kommentar Thread –