Laden...

WPF: ContextMenu Icon

Erstellt von david.ka vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.195 Views
D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 11 Jahren
WPF: ContextMenu Icon

Hallo,

in meinem Context Menü lese ich die Ordnerstruktur (inkl. Dateien) meiner Verzeichnisse aus.
Nun möchte ich dass die Dateien auch die richtigen Icons angezeigt bekommen.

dazu habe ich eine Eigenschaft image.
Gebe ich hier ein Icon aus, welches sich auf der Platte befindet, funktioniert es wunderbar.


public BitmapImage image
        {
            get 
            {
                System.Windows.Media.Imaging.BitmapImage img = new System.Windows.Media.Imaging.BitmapImage(new Uri(@"c:\Mail.ico"));
                return img;
            }
        }

wenn ich die Icons allerdings im Speicher erstelle, funktioniert es nicht mehr.


public string FullFileName { get; set; }

 public BitmapImage image
        {
            get 
            {
                BitmapImage img= Bitmap2BitmapImage(GetAssociatedIcon(FullFileName));
                return img;
            }
        }

        public static System.Drawing.Bitmap GetAssociatedIcon(string fileName)
        {
            System.Drawing.Icon retval = System.Drawing.Icon.ExtractAssociatedIcon(fileName);
            return retval.ToBitmap();
        }


        private BitmapImage Bitmap2BitmapImage(Bitmap bitmap)
        {

            using (MemoryStream ms = new MemoryStream())
            {
                bitmap.Save(ms, ImageFormat.Png);
                ms.Position = 0;
                BitmapImage bi = new BitmapImage();
                bi.BeginInit();
                bi.StreamSource = ms;

                bi.EndInit();

                return bi;
            }
        }

die Methoden sollten doch eigentlich richtig sein, oder?

Grüße David

Programming is like sex: One mistake and
you have to support it your lifetime

5.657 Beiträge seit 2006
vor 11 Jahren

Hi david.ka,

was heißt "funktioniert nicht". Kannst du uns eine Fehlermeldung geben? Ansonsten finde ich deine Konstruktion sehr fragwürdig. Wieso sollte z.B. denn das Bitmap jedesmal neu erstellt werden, wenn das Property abgerufen wird? Hast du auch das INotifyPropertyChanged-Interface implementiert, damit das UserInterface auch über eine Änderung des Propertys benachrichtigt werden kann?

Christian

Weeks of programming can save you hours of planning

D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 11 Jahren

das ist auch vorerst mal nur zu test zwecken... deshalb mal bitte über schlechte Konstruktion wegsehen... 😃
Fehlermeldung kommt keine, auch in der "Ausgabe" ist nichts zu sehen.

INotifyPropertyChanged:
werde ich mal ausprobieren, komisch aber, dass es bei der anderen Lösung funktioniert.

Programming is like sex: One mistake and
you have to support it your lifetime

5.657 Beiträge seit 2006
vor 11 Jahren

Hi david.ka,

was hindert dich denn daran, einen Breakpoint in den Property-Getter zu setzen und dann zu schauen, welcher Dateiname übergeben und welches Icon dafür erzeugt wird?

Christian

Weeks of programming can save you hours of planning