Laden...

Images richtig einbinden bei refeenziertem Projekt

Letzter Beitrag vor einem Jahr 4 Posts 586 Views
Images richtig einbinden bei refeenziertem Projekt

Hallo,

ich arbeite derzeit an einem wpf-Projekt, bei dem ein simpler Texteditor benötgt wird. Meine Idee ist, den Texteditor in ein eigenes Projekt auszulagern, so dass meine Projektmappe nun zwei Projekte beinhaltet:

  • Main-App
  • TextEditor

Im TextEditor-Projekt habe ich einen Ordner mit Namen "Images". Bis jetzt handelt es sich beim Inhalt lediglich um drei Bilddateien. I

Ich habe TextEditor in Main-App referenziert. Bisher habe ich eine MainView im Main-App-Projekt und eine TextEditorView im TextEditor-Projekt. Die TextEditorView schaut so aus:

<UserControl x:Class="TextEditor.Views.TextEditorView"
            <!-- die üblichen Namespaces wurden der Übersichtlichkeit wegen hier weggelassen-->            
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid Background="AliceBlue">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition/>           
        </Grid.RowDefinitions>

        <DockPanel Grid.Row="0">
            <ToolBar>
                <Button x:Name="btnBold" Width="20" Height="20">
                    <Image Source="TextEditor;component/Images/bold.png"/>
                </Button>
                <Button x:Name="btnItalic" Width="20" Height="20">
                    <Image Source="TextEditor;component/Images/italic.png"/>
                </Button>
                <Button x:Name="btnUnderline" Width="20" Height="20">
                    <Image Source="TextEditor;component/Images/underline.png"/>
                </Button>
            </ToolBar>            
        </DockPanel>            
    </Grid>
</UserControl>

Dieses UserControl soll in der MainView der Main-App angezeigt werden. Hier der Code:

<Window x:Class="SoloAdventurer.Views.AppMainView"
        <!-- die üblichen Namespaces wurden zur Vereinfachung weggelassen, bis auf den folgenden: --
        xmlns:textEditorViews ="clr-namespace:TextEditor.Views;assembly=TextEditor"
        mc:Ignorable="d"
        Title="AppMainView" Height="450" Width="800">
    <Grid>
        <textEditorViews:TextEditorView/>
    </Grid>
</Window>

Das Problem: der Designer zeigt mir bei TextEditorView noch die Images an, in AppMainView jedoch nicht. Wenn ich einen build erstelle kann ich zwar die Buttons sehen, die Images werden aber scheinbar nicht geladen.

Habe ich etwas Wesentliches übersehen?

Ich arbeite zum ersten Mal mit zwei Projekten innerhalb einer Solution.

Vielen Dank,

Gruß

Gene

Versuch es doch mal mit

<Image Source="/TextEditor;component/Images/bold.png"/>

Also mit einem Slash vor dem Bibliotheks-Namen

Hat die Blume einen Knick, war der Schmetterling zu dick.

Dies fällt unter den Begriff Paket-URI (engl. Pack URI): Paket URI in WPF

Die Langform steht unter "Ressourcendatei der Assembly, auf die verwiesen wird":

<Image Source="pack://application:,,,/TextEditor;component/Images/bold.png"/>

(die Kommata stehen für die optionale Version und PublicKey der Assembly)

Und unter "Verwenden von Paket-URIs im Markup" steht, daß man auch relative URIs angeben kann (also so wie BlonderHans geschrieben hat).

Vielen Dank euch beiden - beide Versionen führen (natürlich) zum gewünschten Ergebnis! Auch wenn es peinlich ist: ich glaube, ich habe mich so sehr von der Tatsache täuschen lassen, dass in der TextEditorView im Designer die Images zu sehen waren, dass ich lange nicht auf den Slash gekommen wäre. Vielen Dank nochmal!