Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
182
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    besy Tutorials.de Gastzugang
    Hallo,

    ich habe mir ein englischsprachiges WPF Buch zugelegt und scheinbar eines erwischt was schon einiges an Programmierkenntniss vorraussetzt. Immer wieder muss ich Sachen goggeln auf die im Buch gar nicht näher eingegangen wird, weil wohl selbstverständlich.

    Nun hänge ich aber im Kapitel "DataBinding" fest und hoffe ihr könnt mir helfen. Ich poste das hier, weil obwohl es um WPF geht ist das Problem eher anderer Natur
    Im Buch wird folgendes verlangt, ohne jede weitere Erklärung:

    I have created a Person object with FirstName and LastName public properties. There is also a public property called Address of type Address which has Street, City and State properties.
    Nachdem ich erstmal geschaut habe was Properties überhaupt sind, habe ich folgendes gemacht:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    public class Person
    {
        private string firstName;
        private string lastName;
     
        public FirstName
        {
            get { return firstName; }
            set { firstName = value; }
        }
     
        public LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }
    }

    Das geht soweit auch. Was mir Probleme macht ist die Adresse. Wie erstelle ich eine Property die ihrerseits wieder mehrere Properties hat ? Ich komm da nicht dahinter...

    lg
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.425
    Zitat Zitat von besy Beitrag anzeigen
    Was mir Probleme macht ist die Adresse. Wie erstelle ich eine Property die ihrerseits wieder mehrere Properties hat ?
    Hallo besy,

    ich denke, das damit eine Struktur gemeint, die die Adressdaten aufnimmt und diese dann als Property bereitstellt.

    Properties benötigen immer auch einen Typ. Den hattest du bei LastName und FirstName vergessen.

    Da du wahrscheinlich mit einer aktuellen .NET-Version arbeitest, kannst du dir Schreibarbeit sparen, indem du die sog. automatischen Properties verwendest. Man braucht dann nicht mehr extra Membervariablen anzulegen.

    Hier das Beispiel:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    public class Person
    {
        public string  FirstName { get; set; }
        public string  LastName  { get; set; }
        public Address Address   { get; set; }
        
        public struct Address
        {
            public string street;
            public string city;
            public string state;
        }
    }
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    besy Tutorials.de Gastzugang
    Hallo,

    danke für die Antwort.
    Hab das mal so versucht, das struct musste ich umbennen weil er mich 2mal "Address" nicht benutzen lassen wollte (als struct Name und als Property) aber das müsste ja egal sein, hab es einfach mal "Data" genannt.:

    Initialisiert hab ichs dann so:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            Person p1 = new Person();
            p1.FirstName = "Lara";
            p1.LastName = "H.";
            Person.Data address = new Person.Data();
            address.City = "weit weg";
            address.State = "noch weiter weg";
            address.Street = "ganz weit weg";
            p1.Address = address;
            this.DataContext = p1; //Das hab ich auch ewig gesucht...
        }
    }

    Ich muss ja erst ein Struct erstellen, weil die Property Address ja jetzt nur ein ganzes struct erwartet und zurückgibt, die einzelnen Werte wollte er mich nicht einzelnen setzen lassen.
    Das DataBinding klappt nun für FirstName und LastName, bei der Adresse aber leider nicht. Im Buch bindet er 3 Textboxen jeweils an Address.Street, Address.City und Address.State, geht das für mich jetzt überhaupt ? Weil die Property gibt ja nur das ganze struct zurück.
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.425
    Zitat Zitat von besy Beitrag anzeigen
    die einzelnen Werte wollte er mich nicht einzelnen setzen lassen.
    Ja stimmt, bei Strukturen bekommt man einen Fehler CS1612. Wenn du aber stattdessen eine Unterklasse verwendest, geht es:
    Code csharp:
    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
    
    public class Person
    {
        public Person() { Address = new Data(); }
        
        public string   FirstName { get; set; }
        public string   LastName  { get; set; }
        public Data     Address   { get; set; }
        
        public class Data
        {
            public string street;
            public string city;
            public string state;
        }
    }
     
    ...
     
    Person p = new Person();
              
    p.FirstName      = "A";
    p.LastName       = "B";
    p.Address.street = "abc";
    p.Address.city   = "city";
    p.Address.state  = "state";
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

Ähnliche Themen

  1. Properties lesen via XML
    Von takidoso im Forum Java
    Antworten: 2
    Letzter Beitrag: 14.11.09, 22:44
  2. testvar has no properties..
    Von Geflügel im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 24.08.07, 03:19
  3. Java Properties
    Von Nick0110 im Forum Java
    Antworten: 1
    Letzter Beitrag: 11.08.07, 17:41
  4. Stack voll! "Properties properties = new Properties ();"
    Von stephan r. im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 13.10.04, 10:36
  5. Properties?
    Von basuhexe im Forum Java
    Antworten: 11
    Letzter Beitrag: 27.05.04, 12:14