none
Thumb wird nicht angezeigt RRS feed

  • Frage

  • Hi,

    ich will ein Thumb mit Bildchen auf einem Canvas anzeigen.

    Aber das Bild wird nicht angezeigt.

    Warum wird das Bild nicht angezeigt?

    Thumb thumb = new Thumb();
    thumb.Width = maxValue.x;
    thumb.Height = maxValue.y;
    thumb.Template = (ControlTemplate)this.Resources["tmbTemplateImage"];
    thumb.Tag = new BitmapImage(new Uri(pathImage));
    thumb.BringIntoView();
    Canvas.SetLeft(thumb, 10);
    Canvas.SetTop(thumb, 10);
    canImages.Children.Add(thumb);

    ResourceDictionary:

    <ControlTemplate x:Key="tmbTemplateImage">
        <Image Source="{TemplateBinding Tag}" Stretch='Uniform' />
    </ControlTemplate>
    width und height sind mit vernünftigen Werten versehen (>100, <1000),
    pathImage ist der richtige Pfad, es gibt auch keine Exception, dass dieses file nicht zu finden wäre,
    canImage ist groß genug (ganzer Bildschirm).


    www.energiewende-mach-ich-selbst.de

    Mittwoch, 2. Juli 2014 09:40

Antworten

Alle Antworten

  • Hallo,
    ich habe deienn Code eben mal getestet und konnte keine Probleme feststellen.

    Wie sieht denn der Wert von pathImage aus? Ich vermute den Fehler dort. Funktioniert denn der Pfad, wenn du ihn direkt irgendwo im XAML verwendest? (Beispielsweis ein einem neuen Image-Control, direkt im Fenster.)

    Stelle bitte sicher, das Buildvorgang für das Bild auf Resource gestellt ist.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 2. Juli 2014 11:12
    Moderator
  • Ich habe das Problem gefunden. 

    Wenn ich das Template in den ResourceDictionary packe,  dann funktioniert es nicht.

    Wenn ich das Template direkt in die xaml packe, in der sich auch das Canvas befindet, dann geht's.

    Danke für's Testen Tom!


    www.energiewende-mach-ich-selbst.de


    • Bearbeitet frank me Mittwoch, 2. Juli 2014 11:55
    Mittwoch, 2. Juli 2014 11:54
  • Solange du das Dictionary irgendwie im MainWindow einbindest, sollte es funktionieren:
    <Window.Resources>
        <ResourceDictionary Source="Dictionary1.xaml"/>
    </Window.Resources>
    Bzw. in den Anwendungsresourcen:
    <Application.Resources>
        <ResourceDictionary Source="Dictionary1.xaml"/>
    </Application.Resources>
    thumb.Template = (ControlTemplate)Application.Current.Resources["tmbTemplateImage"];





    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 2. Juli 2014 11:59
    Moderator
  • In Windows.Resources kann ich es nicht reinpacken, weil die resource-Eigenschaft nur einmal festgelegt werden kann und es kommt zum Konflikt mit bestehenden Einträgen.

    In Application.Resources hatte ich es schon eingebunden, was aber nichts bringt (der Thumb nicht angezeigt wird).


    www.energiewende-mach-ich-selbst.de

    Mittwoch, 2. Juli 2014 12:13
  • Für das Window gibt es noch die MergedDictionaries:
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <Color x:Key="mySecondResource"/>
        </ResourceDictionary>
    </Window.Resources>
    Das einbinden in die App.xaml funktioniert bei mir, solange ich auch den Codebehind an Application.Resources anpasse.

    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 2. Juli 2014 12:25
    Moderator
  • sowohl in Window.Resources als auch in Application.Resources habe ich nun den ResourceDictionary mit merge eingebunden.
    Jetzt gibt es keine Fehlermeldung mehr, aber funktionieren tut es immer noch nicht. :(

    (außer wie oben geschrieben direkt auf der aktuellen xaml)

    Vielleicht ist es noch interessant, dass die Thumbs auf einer Page erscheinen, welche im Window liegt.


    www.energiewende-mach-ich-selbst.de


    • Bearbeitet frank me Mittwoch, 2. Juli 2014 12:33
    Mittwoch, 2. Juli 2014 12:32
  • Versuche mal das Dictionary direkt in die Page einzubinden.
    <Page.Resources>
        ....
    Denn die Resourcen vom Window werden nicht übertragen. Warum allerdings Application nicht funktioniert weiß ich nicht.

    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert frank me Mittwoch, 2. Juli 2014 12:53
    Mittwoch, 2. Juli 2014 12:48
    Moderator
  • Danke Tom,

    die viele Mühe hat sich gelohnt.

    Jetzt funktioniert es.

    Sorry, dass ich erst so spät mit der Page raus gerückt habe. ;)


    www.energiewende-mach-ich-selbst.de

    Mittwoch, 2. Juli 2014 12:54