Laden...

[Gelöst] Databinding, Image und IValueCOnverter Problem

Erstellt von DavidT vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.066 Views
DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren
[Gelöst] Databinding, Image und IValueCOnverter Problem

Hallo,
ich habe in meinem Projektordner ein Verzeichnis Images in dem ich diverse Bilder abgelegt habe und möchte diese nun, abhängig von einem boolschen Wert, per Databinding anzeigen lassen.

Dazu habe ich mir einen ValueConverter geschrieben:


{
    class RecorderStatusToImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            bool isOnline = (bool)value;
            if (isOnline)
            {
                return new BitmapImage(new Uri(@"Images/Recorder/RecorderStart.png",UriKind.Relative));
            }
            else
            {
                return new BitmapImage(new Uri(@"Images\Recorder\RecorderStop.png", UriKind.Relative));
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Wenn ich als URI den absoluten Pfad angebe funktioniert auch alles wunderbar, allerdings bekomme ich es nicht mit einem relativen Pfad hin, wie geht das?

Gruß David

849 Beiträge seit 2006
vor 13 Jahren

Hallo.

Silverlight oder Wpf? Kenne mich nur mit Silverlight ein wenig aus.

Versuch mal "/AssemblyName;component/Images/Test.png"

DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren

Ich nutze WPF...

Mit deinem Ansatz klappt es super, vielen Dank. Warum geht das nicht mit der normalen Adressierung?

Gruß David

297 Beiträge seit 2008
vor 13 Jahren

Vermutlich, weil deine relativen Pfade nicht passen. Diese sind ja von der Executable aus und die Bilder werden wahrscheinlich nicht in den entsprechenden Pfad kopiert, sondern sind als Resources in der Executable enthalten.

There are 10 kind of people, those who understand binary and those who don't.

DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren

Achso und er erkennt das nicht, das ich sich die Bilder in der Resource befinden und wandelt den Pfad um?

Gruß David

297 Beiträge seit 2008
vor 13 Jahren

Wenn du den normalen, relativen Pfad verwendest, wird nach den Dateien relativ von der Executable aus gesucht, beispielsweise unter C:...\ProjektName\bin\Debug\Images\Recorder\RecorderStart.png. Die Bilder liegen bei dir aber vermutlich nicht in den Ordnern bin\Debug... sondern direkt ab dem Projektverzeichnis.

There are 10 kind of people, those who understand binary and those who don't.

DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren

Super, alles klar, dachte das erkennt WPF automatisch wenn ich es als Resource einbinde. Vielen Dank!