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
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
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
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