Jag skriver en applikation i WPF och använder mig av Databinding så mycket som det går. Enkel och ganska snygg lösning, även om det inte är helt optimerat till min värld!!! En lösning på ditt serializerings problem: Hittat en lösning på ditt problem: Skall kolla på det i morgon, jag vill ju att det skall fungera, men ,ed tanke på din "spydighet" :) så är det nästan så att jag hoppas det inte fungerar så du kommer ner på jorden igen ;) Ja det är bara att titta uppåt bland molnen och se fredrik sväva vidare...WPF strular till det med databinding.
Problemet är att om man plockar upp en artiklen och visar den i ett formulär och man ändrar något så kommer detta ju sparas ner direkt till artiklen och det vill jag inte, utan det är först när man trycker på spara knappen som datan skall sparas ner.
Så för att lösa det så har tar jag implementerat en DeepCopy funktion på mitt artikelobjekt och när jag öppnar formuläret så kallar jag på BeginEdit() metoden på mitt artikelobjekt och när jag trycker på spara knappen så kallar jag på EndEdit() metoden på mitt objekt och om jag stänger utan att spara så kallar jag på CancellEdit() metoden på mitt objekt. Det fungerar relativt bra :)
Min DeepCopy funktion fungerar så att den bara tar och serializerar ner datan till en binär memorystream och sedan deseralizerar memorystreamen tillbaka till ett nytt objekt.
Problemet som jag får är att när jag vill göra en kopia av min artikel (när artikel formuläret är öppet) så kör jag en deepcopy på detta objekt, men eftersom vissa av mina egenskaper på objektet är databindet till typ en ListView så får jag följande fel:
"Type 'System.Windows.Data.ListCollectionView' in Assembly 'PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable."
Och det köper jag, men varför i hela världen försöker den serializera ListCollectionView när min egenskap är en ObservableCollection<T>... Kan man lösa detta på något sätt, förutom att manuellt ta bort binding i koden, köra min deepcopy och sedan sätta på bindingen igen...
- MSv: WPF strular till det med databinding.
Eftersom du kör med ObserverCollection<T> så kommer dina data-bound control "hooka" upp sig till din Observers evnts. Och du kan inte Serializera events. Sedan är ObserverCollection<T> inte serializerbra..
Tyvärr kan du bara markera fält med NonSerializedAttribute så du måste själv hantera serializeringen, detta kan du göra med ISerializable interfacet..Sv: WPF strular till det med databinding.
http://kentb.blogspot.com/2007/11/serializing-observablecollection.html
Lite sarkasm:
Hur hittade jag hit: www.google.com, sökte på "ObservableCollection<T> WPF" och tredje träffen va länken, lätt va :P
Hoppas det va lösningen nu bara så jag inte råkar illa ut ;)Sv:WPF strular till det med databinding.
- MSv: WPF strular till det med databinding.
Det fungerade hur bra som helst, tack för den informationen.
- M