Huhu,
bin immer noch neu im WPF-Gebiet und habe ein neues Problem. Und zwar möchte ich einer ListView eine ProgressBar anhängen.
Mein XAML-Code sieht wie folgt aus:
<GridViewColumn Header="Progress">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ProgressBar Name="progressBarVideo" Height="20" Width="100" Minimum="0" Maximum="100" Value="{Binding Path=Progress}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Der C#-Code:
listViewFiles.Items.Add(
new {
Images = videoList[i].videoThumbnailUrl,
Title = videoList[i].videoTitle,
Length = videoList[i].videoLength,
Progress = 91,
Status = "",
});
Nun kommt folgende Exception:
TwoWay- oder OneWayToSource-Bindungen funktionieren nicht mit der schreibgeschützten Eigenschaft "Progress" vom Typ "<>f__AnonymousType0`5[System.String,System.String,System.String,System.Int32,System.String]".
So, setze ich nun im XAML-Code Value auf Value="50" wird das Programm gestartet und die ProgressBar steht auf 50%.
Was mache ich nun verkehrt? Vorallem aber wie greife ich jetzt auch auf die ProgressBar zu um un einen Status korrekt anzeigen zu können?
Hi,
na die Fehlermeldung ist doch aussagekräftig. Da die Properties eines anonymen Typen readonly sind, kannst Du kein TwoWay Binding benutzen. (Dies ist bei der Value Property der Progressbar Default.)
Sprich entweder Du gibst explizit an, dass es OneWay ist
Value="{Binding Path=Progress, Mode=OneWay}"
oder du benutzt eben keinen anonymen Typen.
Gruß
t0ms3n
Huhu, Danke für deine Antwort. Habe ich mit der "OneWay" Methode denn irgendwelche Nachteile?
Und wie kann man keinen "anonymen Typen" verwenden?
Ich wusste nichtmal, dass man mit
listViewFiles.Items.Add(
new {
Images = videoList[i].videoThumbnailUrl,
Title = videoList[i].videoTitle,
Length = videoList[i].videoLength,
Progress = 91,
Status = "",
});
einen anonymen Typen erzeugt =)
Ich konnte bis jetzt nur herausfinden, dass man so eine Art "SubItem" wie bei WinForms erzeugt. Zumindest werden die Items alle wie bei einer WinForms ListView angezeigt.
Hallo Diablo
Mit
new {
Images = videoList[i].videoThumbnailUrl,
Title = videoList[i].videoTitle,
Length = videoList[i].videoLength,
Progress = 91,
Status = "",
}
Erstellst du ein anonymer Typ weil kein expliziter Typ angegeben.
Dein Typ wäre also etwa string,string,int,int,string.
Habe ich mit der "OneWay" Methode denn irgendwelche Nachteile?
OneWay bedeutet "readonly".
Wenn du kein anonymer Typ willst kannst eine Klasse erstellen und diese dann verwenden :
new [B]MyClass [/B]{
Images = videoList[i].videoThumbnailUrl,
Title = videoList[i].videoTitle,
Length = videoList[i].videoLength,
Progress = 91,
Status = "",
}
Dies gehört aber zu den Grundlagen und wird hier eigentlich voraussgesetzt 😉
Beste Grüsse
Diräkt