C# WPF Hogyan kell, egy dll-ben lévő ikonra hivatkozni?
2020-12-30T03:01:15+01:00
2020-12-30T17:57:40+01:00
2022-08-19T02:02:08+02:00
Papa76
Sziasztok!
Segítséget szeretnék kérni tőletek, mert nem boldogulok. C# WPF programban szeretnék összeállítani egy dll fájlt, amiben gyűjteném az  ikonjaimat/képeimet.

A dll összeállítás (úgy vélem) sikerül is. Külön  resources-ben, és a Properties.Resources-ban is sikerült eltárolnom a képeket.

Viszont ami nagyon nem megy, az a hivatkozás rá. Képtelen  vagyok rájönni, vagy megtalálni, hogy hogyan kell. Ezzel próbálkoztam  (számtalan variációban) , a MainWindow.xaml kódjában:
"Icon="pack://application:,,,/KepIc;component/Properties/Resources/Ikon.ico""
"Icon="pack://application:,,,/KepIc;component/Ikon.ico"".
Ebben az esetben a "Cannot locate resource 'ikon.ico'" üzenetet kapom.

Az ikon a KepIc.dll tulajdonságaiban lévő resourcesben van. A programom "References" részéhez hozzáadtam a dll-t. Igazából egy solutionban van mind a kettő project.

Előre is köszönöm mindenkinek a válaszát!
Mutasd a teljes hozzászólást!
Szia,

Add hozzá a satellite project-hez az Ikon.ico fájlt, a Build Action legyen Resource. Resource fájlra nincs szükség. Ha a project fő könyvtárában van az ikon, akkor:

Icon="pack://application:,,,/KepIc;component/Ikon.ico"
ha a project-en belül pl. az Icons könyvtárban, akkor:

Icon="pack://application:,,,/KepIc;component/Icons/Ikon.ico"
módon tudsz rá hivatkozni.

Mellékeltem egy solution-t.
Mutasd a teljes hozzászólást!
Csatolt állomány

  • Mivel az eredeti kérdés arra vonatkozott, hogy sok képet akarsz külön szerelvénybe szervezni, ezért csináltam egy olyan megoldást, ahol ikon is és kép is van használatban.

    <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800" Icon="pack://application:,,,/WpfLibrary1;component/Icon1.ico" > <Grid> <Image Source="pack://application:,,,/WpfLibrary1;component/Bitmap1.bmp"/> </Grid> </Window>
    Nem derült ki viszont az esetleírásodból, hogy gondoskodtál-e arról, hogy a szerelvény (az assembly, a DLL) fordítás után odakerüljön a program (az exe) mellé.
    Ezt lehet úgy is, hogy eleve oda irányítod (a Build Output átirányításával) vagy egy fordítás utáni szkripttel odamásolod a lefordított szerelvényt a program mellé.
    A csatolt megoldásban az első módszert követtem.
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Köszönöm mindkettőtök segítségét!

    A példáitok alapján értettem meg, hogy hogy is működik ez. Eddig a projecten belül, hozzáadtam a képeket a Resourceshez, és azt gondoltam, hogy arra lehet majd hivatkozni. Tévedtem. A Build Action átállítása, meg fel sem merült. Pedig már egy hete gugliztam...

    Nagyon köszönöm!
    Mutasd a teljes hozzászólást!
  • Nem derült ki viszont az esetleírásodból, hogy gondoskodtál-e arról, hogy a szerelvény (az assembly, a DLL) fordítás után odakerüljön a program (az exe) mellé.Ezt lehet úgy is, hogy eleve oda irányítod (a Build Output átirányításával) vagy egy fordítás utáni szkripttel odamásolod a lefordított szerelvényt a program mellé.

    Az az alap megoldás, ha hozzáadja a References-hez. Írta is, hogy ez megtörtént.
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
abcd