2016-07-07 21 views
0

Ich habe derzeit eine sehr einfache UserControl, die nur ein einziges Bild enthält. Wenn ich dieses Benutzersteuerelement auf ein anderes Fenster im selben Projekt lege, wird das Bild nicht mehr im Editor angezeigt und auch nicht mehr, wenn ich mein Programm ausführe. Ich habe mir jede Frage angeschaut, die ich finden kann, aber ich habe es immer noch nicht geschafft.Bilder in UserControl nicht im Fenster angezeigt

Mein Benutzersteuerung ist:

Embedded images not showing when in a UserControl

WPF - UserControl with images not showing properly

Why are my images not showing up in my UserControl?

01:

<UserControl x:Class="MyApp.DetailViews.InfoDetails" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="20" d:DesignWidth="20"> 
<Grid> 
    <Image Source="/MyApp;component/Assets/Icon.png" HorizontalAlignment="Left" Height="20" VerticalAlignment="Top" Width="20"/> 
</Grid> 

ich diese quesstions überprüft haben

Die Sache, die sie alle gemeinsam haben, ist die Build-Einstellungen für die Komponenten. Als solches habe ich die eigentliche .png Build-Aktion auf Inhalt und die Kopie zum Ausgabeverzeichnis auf Kopieren immer eingestellt.

Das eigentliche UserControl selbst hat Build Aktion auf Seite eingestellt (obwohl ich versucht habe, es auf Inhalt oder Ressource zu setzen), und ist auf Nicht kopieren festgelegt. Dies sind die gleichen Einstellungen wie alle anderen UserControls, und ich habe keine Probleme damit.

Ich habe die folgende Ordnerstruktur:

MyApp/MyApp.sln 
MyApp/MainWindow.xaml/cs 
MyApp/DetailViews/InfoDetails.xaml/cs 
MyApp/Assets/Icon.png 

Was habe ich verpasst das Bild tatsächlich auf dem Fenster erscheinen zu lassen?

Danke.

+1

Wenn Sie dieses Bild auf einem Bildsteuerelement verwenden (nicht innerhalb des Benutzersteuerelements) wird es geladen? –

+0

Was ist die Beziehung des 'UserControl' zu dem Fenster, in dem Sie es verwenden? Sind sie im selben Projekt? Befinden sie sich im selben Ordner im selben Projekt? Es ist nicht wahrscheinlich, dass jemand Ihr Problem ohne eine vollständige Beschreibung dessen, wie Ihr Projekt strukturiert ist (einschließlich), wo und wie die Ressource deklariert wird, reparieren kann. –

+0

As '/ MyApp; component/Assets/Icon.png' ist ein [Resource File Pack-URI] (https://msdn.microsoft.com/en-us/library/aa970069 (v = vs.100) .aspx # Resource_File_Pack_URIs___Local_Assembly), muss die Build Action der Image-Datei 'Resource' sein. Dann würden Sie auch 'Nicht kopieren' auswählen. – Clemens

Antwort

0

Versuchen Sie es mit der vollständigen URI.

Source="pack://application:,,,/MyApp;component/Assets/Icon.png" 

Für Build-Aktion können Sie es auf "None" lassen, aber Sie müssen "Copy if neuer" wählen.

+0

Dies ist ein [Resource File Pack URI] (https://msdn.microsoft.com/en-us/library/aa970069 (v = vs.100) .aspx # Resource_File_Pack_URIs ___ Local_Assembly), also muss die Build-Aktion natürlich 'sein Ressource ". Dann würden Sie auch 'Nicht kopieren' auswählen. Außerdem ist das Präfix "pack: // application:" in XAML nicht erforderlich.Es wird automatisch hinzugefügt. – Clemens

+0

@Clemens Content-Datei Pack URI verwendet auch die exakt gleiche Syntax. Und auch, 'pack: // application: ,,,' Präfix bezeichnet absoluten Pfad; Ausschließen heißt relativer Pfad. Es wird alles unter derselben URL erwähnt, die Sie angegeben haben. – Jai

+0

Mit dem Unterschied, dass das Setzen der Build-Aktion "Content" beim Laden von Image-Dateien aus Pack-URIs nicht funktioniert. Versuche es. – Clemens

Verwandte Themen