Hallo Leute,
mal ein Problem,welches bei einem privaten kleinen Projekt auftritt:
Ich mache eine Auswertung von einem Spiel, wo ich die Daten sowie die Icons runter lade und dann im Grid anzeige.
Binden tue ich dies wie folgt:
Runterladen, tue ich das Bild wie folgt:
Ich erstelle also eine leere Datei, welche ich gleich wieder dispose.
Dann lade ich das entsprechende File lokal runter. Dies klappt soweit alles gut, und die Bilder werden auch angezeigt, wenn ich allerdings erneut auf die Bilder zugreifen will, sind diese gelockt.
Ich dachte, ein einfaches clearen der DataSource und auch der Liste, sollte helfen, doch leider geht das nicht. Ich arbeite mit einem Backgroundworker, der während dem Download einfach einen Progressbar mit unbestimmer Länge anzeigt:
Ich versuche also das ganze mit CountersHandler.GetCounters zu laden, falls z.B. ein falscher Name eingegeben wurde, wird einfach nichts angezeigt. Leider gibt es eben den Fehler, dass die Bilder noch von einem Prozess verwendet werden.
Ich habe Lösungen gefunden, allerdings empfehlen diese dann, nicht direkt mit Binding zu arbeiten, was ja eigentlich schon recht elegant wäre.
Hat da jemand eine Idee? Wenn ich die Bilder nicht in das Grid lade, kann ich alles sauber löschen, daher muss es definitiv mit dem Binding zu tun haben.
Wie immer vielen Dank im Voraus
Matthias Müller
mal ein Problem,welches bei einem privaten kleinen Projekt auftritt:
Ich mache eine Auswertung von einem Spiel, wo ich die Daten sowie die Icons runter lade und dann im Grid anzeige.
Binden tue ich dies wie folgt:
Code:
<GridViewColumn Header="" Width="40">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding HeroIcon}" Width="24" Height="24" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Runterladen, tue ich das Bild wie folgt:
Code:
string file = Path.Combine(FileHandler.GetFilePath(ImagePath.Counters), Path.GetFileName(picture));
File.Create(file).Dispose();
using (WebClient client = new WebClient())
{
client.DownloadFile(picture, file);
}
result.HeroIcon = file;
Ich erstelle also eine leere Datei, welche ich gleich wieder dispose.
Dann lade ich das entsprechende File lokal runter. Dies klappt soweit alles gut, und die Bilder werden auch angezeigt, wenn ich allerdings erneut auf die Bilder zugreifen will, sind diese gelockt.
Ich dachte, ein einfaches clearen der DataSource und auch der Liste, sollte helfen, doch leider geht das nicht. Ich arbeite mit einem Backgroundworker, der während dem Download einfach einen Progressbar mit unbestimmer Länge anzeigt:
Code:
void _backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
List<Hero> heros = null;
try
{
string heroName = Convert.ToString(e.Argument);
lsvHeros.Dispatcher.BeginInvoke(new Action(() => lsvHeros.ItemsSource = null));
heros = CountersHandler.GetCounters(heroName);
}
catch (Exception ex)
{
heros = new List<Hero>();
}
finally
{
lsvHeros.Dispatcher.BeginInvoke(new Action(() => lsvHeros.ItemsSource = heros));
}
}
Ich versuche also das ganze mit CountersHandler.GetCounters zu laden, falls z.B. ein falscher Name eingegeben wurde, wird einfach nichts angezeigt. Leider gibt es eben den Fehler, dass die Bilder noch von einem Prozess verwendet werden.
Ich habe Lösungen gefunden, allerdings empfehlen diese dann, nicht direkt mit Binding zu arbeiten, was ja eigentlich schon recht elegant wäre.
Hat da jemand eine Idee? Wenn ich die Bilder nicht in das Grid lade, kann ich alles sauber löschen, daher muss es definitiv mit dem Binding zu tun haben.
Wie immer vielen Dank im Voraus
Matthias Müller