Autor Beitrag
alegria
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Mi 16.02.11 15:20 
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
ausblenden 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
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 16.02.11 15:41 
user profile iconalegria hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: 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... ;)