Entwickler-Ecke
WPF / Silverlight - Serialization Problem beim Speichern von Brush in IsolatedS.
alegria - Mi 16.02.11 15:20
Titel: Serialization Problem beim Speichern von Brush in IsolatedS.
Hey!
Kann eine bestimmte Klasse (mit Brush) nichts als Objekt in den IsolatedStorage abspeichern. Der mir nicht viel sagende Fehlertext lautet:
Zitat: |
Der Typ "System.Windows.Media.Transform" kann nicht serialisiert werden. Kennzeichnen Sie ihn ggf. mit dem Attribut "DataContractAttribute", und kennzeichnen Sie alle zu serialisierenden Member des Typs mit dem Attribut "DataMemberAttribute". Alternativ können Sie sicherstellen, dass der Typ öffentlich ist und über einen parameterlosen Konstruktor verfügt - in diesem Fall werden alle öffentlichen Member des Typs serialisiert, und es sind keine Attribute erforderlich. |
Beispielcode zwecks Reproduktion...
XAML
XML-Daten
1: 2: 3: 4:
| <Grid x:Name="LayoutRoot" Background="White"> <Rectangle Width="50" Height="50" Stroke="Black" Fill="{Binding Path=myColor}"></Rectangle> <TextBlock Text="{Binding myText}" ></TextBlock> </Grid> |
CODEBEHIND
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| public partial class MainPage : UserControl { public ObservableCollection<myClass> myColl; public MainPage() { InitializeComponent(); Application.Current.Exit += new EventHandler(Current_Exit); myColl = new ObservableCollection<myClass>();
if (IsolatedStorageSettings.ApplicationSettings.Contains("mySettings")) { myColl = (ObservableCollection<myClass>)IsolatedStorageSettings.ApplicationSettings["mySettings"]; } else { myColl.Add(new myClass { myText = "alpha", myColor = new SolidColorBrush(Colors.Orange) }); } this.DataContext = myColl[0]; }
void Current_Exit(object sender, EventArgs e) { IsolatedStorageSettings.ApplicationSettings["mySettings"] = myColl; try { IsolatedStorageSettings.ApplicationSettings.Save(); } catch (Exception ex) { MessageBox.Show("Fehler beim Speichern des Objektes! --> " + ex.Message); } } }
public class myClass { public string myText { get; set; } public SolidColorBrush myColor { get; set; } } |
Jemand eine Idee oder besser noch Lösung???
Danke im Voraus...
Kha - Mi 16.02.11 15:41
alegria hat folgendes geschrieben : |
Der mir nicht viel sagende Fehlertext |
In dem Brush steckt ein Transform, und die Klasse kann nicht serialisiert werden :nixweiss: ? Überlege dir einmal, ob du wirklich den gesamten Brush speichern musst.
alegria - Mi 16.02.11 16:48
Einfach string als Property nutzen und dann im Binding einen Converter einsetzen...
Warum ich da nicht eher drauf gekommen bin... ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!