提问人:StraleS02 提问时间:6/9/2023 最后编辑:FlorianStraleS02 更新时间:6/10/2023 访问量:34
即使我知道路径很好,WPF C# 图像也不会显示
WPF C# image won't show even though I know the path is good
问:
我必须将特定路径中的图像添加到类 Ucenik 的 ImageSource 字段。 以下是与该问题相关的所有代码(可能):
这是读取 Observable 集合的所有数据的函数 (类 Skola 的字段类型为 Observablecollection)。 “其他”部分很重要。
public ObservableCollection<Skola> citaj(string putanja)
{
ObservableCollection<Skola> skole = new ObservableCollection<Skola>();
ObservableCollection<Ucenik> ucenicis = new ObservableCollection<Ucenik>();
using (StreamReader sr = new StreamReader(putanja))
{
string linija;
while ((linija = sr.ReadLine()) != null)
{
string[] delovi = linija.Split(";");
if (delovi.Length == 4)
{
if (delovi[0] == "0")
{
string naziv_s = delovi[1];
int id_s = int.Parse(delovi[2]);
string adresa_s = delovi[3];
Skola s = new Skola(id_s, naziv_s, adresa_s);
foreach(Ucenik u in ucenicis)
{
s.dodajUcenikaTest(u);
}
ucenicis.Clear();
skole.Add(s);
}
else
{
string ime = delovi[0];
string prezime = delovi[1];
string adresa = delovi[2];
string jbmg = delovi[3];
string newFileName = "";
newFileName += ime;
newFileName += "_";
newFileName += prezime;
newFileName += ".png";
string newFilePath = Path.Combine(folderPath_ucenik, newFileName);
if (File.Exists(newFilePath))
{
BitmapImage slika = new BitmapImage(new Uri(newFilePath, UriKind.RelativeOrAbsolute));
Ucenik u = new Ucenik(jbmg, ime, prezime, adresa, slika);
ucenicis.Add(u);
}
else
{
Ucenik u = new Ucenik(jbmg, ime, prezime, adresa);
ucenicis.Add(u);
}
}
}
}
}
}
以下是我如何使用类“Citac”中的“citaj”函数:
private ObservableCollection<Skola> skole=new ObservableCollection<Skola>();
private Skola NEUPISANI;
private Skola selected_skolice = new Skola();
private Citac citac = new Citac();
public MainWindow()
{
InitializeComponent();
/* --> */ skole = citac.citaj("Ucenici.txt");
NEUPISANI=skole.ElementAt(0);
}
以下是一些类“Ucenik”:
public event PropertyChangedEventHandler PropertyChanged;
private string JMBG;
private string ime;
private string prezime;
private string adresa;
private ImageSource slika;
public Ucenik(string JMBG, string ime, string prezime, string adresa)
{
this.ime = ime;
this.prezime = prezime;
this.adresa = adresa;
this.JMBG = JMBG;
}
public Ucenik(string JMBG, string ime, string prezime, string adresa, ImageSource slika)
{
this.ime = ime;
this.prezime = prezime;
this.adresa = adresa;
this.JMBG = JMBG;
this.slika = slika;
}
我已经使用消息框测试了代码是否识别了照片的路径,并且确实如此,我认为问题可能出在构造函数或类似的东西上。另外,当我添加一张照片时,我应该提到 WPF,它会显示它,只是在启动程序时它必须加载自己,然后它就不会显示。
----编辑----
我通过更改添加照片的方式来修复它:
BitmapImage slika = new BitmapImage(new Uri(newFilePath, UriKind.RelativeOrAbsolute));
对此:
BitmapImage slika = new BitmapImage();
slika.BeginInit();
slika.UriSource = new Uri(newFilePath, UriKind.RelativeOrAbsolute);
slika.CacheOption = BitmapCacheOption.OnLoad;
slika.EndInit();
答: 暂无答案
评论