Hallo leute,
ich habe ein kleines Problem ... Ich habe zwei ObservableCollections in der sich UserControls befinden.
Es wird bei einer Aktion ein item von der einen Collection in die andere geaddet und aus der alten gelöscht.
Das Problem is das wenn ich das Item aus der einen Collection entferne, dann wird bei dieser Collection immer 2 weniger angezeigt ... ein Beispiel:
Collection A hat 5 UserControls, die alle richtig angezeigt werden.
Dann wird in Collection B ein Control aus A geadded und anschließend aus A entfernt.
Jetzt hat Collection B ein element und Collection A hat vier elemente.
In der View wird jetzt Collection B mit einem Element richtig dargestellt
Die Darstellung für Collection A ist aber fehlerhaft. Hier werden nur noch 3 elemente angezeigt obwohl Count 4 ist!
public void PlayCard()
{
if (PlayableCard == null)
return;
foreach (CardControl aCardControl in HandCards)
if (aCardControl.Equals(PlayableCard)) {
aCardControl.Card.State = CardState.OnField;
FieldCards.Add(aCardControl);
HandCards.Remove(aCardControl);
PlayableCard = null;
break;
}
}
jemand ne idee was das sein kann?
ich hab das Problem erstmal mit nem Workaround umgangen ... ich leere die Collection und befülle sie wieder mit den gleichen daten ... dann stimmt die anzeige
das is natürlich sehr unschön 😕
foreach (CardControl aCardControl in HandCards)
if (aCardControl.Equals(PlayableCard)) {
aCardControl.Card.State = CardState.OnField;
FieldCards.Add(aCardControl);
HandCards.Remove(aCardControl);
//------------------------------------------------- workaround
Cards temp = new Cards();
foreach (CardControl control in HandCards) {
temp.Add(new CardControl(control.Card));
}
HandCards.Clear();
foreach (CardControl item in temp) {
item.OnPlayable += (sender, e) => { PlayableCard = (CardControl) sender; };
HandCards.Add(item);
}
//-------------------------------------------------
PlayableCard = null;
break;
}
vieleicht kommt ja jetzt jemand drauf ... ich steh nämlich ganz schön aufm Schlauch was das angeht
PS: die Klasse Cards erbt von ObservableCollection
Hi Coooder,
man kann nur immer wiederholen, daß man in WPF keine Steuerelemente im Code erzeugt. In eine ObservableCollection gehören die ViewModels, die du in der View an deine Steuerelemente bindest.
Christian
Weeks of programming can save you hours of planning
Okay dann versteh ich aber nich warum ^^
Also ich hab das ItemsSource Property von einem ItemsControl an die Collection gebunden.
Wenn in der Collection nun aber nich die Controls drin sind, sonder nur die VM´s ... wie wird das dann angezeigt?
Okay dann versteh ich aber nich warum ^^
Also ich hab das ItemsSource Property von einem ItemsControl an die Collection gebunden.
Wenn in der Collection nun aber nich die Controls drin sind, sonder nur die VM´s ... wie wird das dann angezeigt?
Du sagst deinem XAML wie ein VM dargestellt wird.
http://www.codeproject.com/Articles/819294/WPF-MVVM-step-by-step-Basics-to-Advance-Level
EDIT: Der hier is besser https://msdn.microsoft.com/en-us/library/gg430857%28v=pandp.40%29.aspx