Hallo Herr Rauchfuß,
vielen Dank noch einmal für Ihre Antwort. Leider sehe ich da immer noch zwei Probleme. Um das zu verdeutlichen habe ich ein kleines Beispiel und unter meinem Beitrag einen Nachbau der Felderübersicht erstellt, da ich keinen Screenshot aus dem Designer der Felderübersicht angehängen darf.
Die Übersicht zeigt mir so zwar an, welche Tabellen ich haben könnte, aber nicht wie die Felder darin aussehen, da die Adressen auch jeweils Teil der einzelnen Personen sind.
Wenn ich über den Zusammenhang der Daten nichts weiß, müsste ich außerdem raten, zu wem denn nun die Noten, Geräte, Raumnummern und Fächer gehören. Zudem werden nur der Schulleiter und der Hausmeister unter dem RootTablename Schule zusammengefasst und nicht die Collections Schüler und Lehrer.
Da die Übersicht im Berichtscontainer aber die richtige Ansicht zeigt, ist das das kleinere Problem.
Problematischer finde ich dabei die Lokalisierung. Für die erste Klasse, die von PersonBase erbt, wird Addresses noch korrekt übersetzt, alle weiteren bekommen dann ihren Klassennamen als Präfix.
Dann müsste ich für jede Collection auch noch eine zusammengesetzte Übersetzung bereitstellen und zudem wissen, wessen Adressen mit “Feldnamen” als erstes angemeldet werden (und hoffen, dass die Reihenfolge immer gleich ist und die Reihenfolge der Felder innerhalb der Klasse nie geändert werden). Da die anderen Felder einer Klasse mit “Klassennamen.Feldnamen” angemeldet werden, verstehe ich nicht, warum man hier auf die Eindeutigkeit verzichtet und stattdessen erst beim zweiten Auftreten eines Feldes “KlassennamenFeldnamen” ohne Punkt verwendet.
Hoffentlich wurde mein Einwand nun klarer.
Mit freundlichen Grüßen,
Simone Lange
PS. nachfolgend der Nachbau der Felderübersicht, die ich im Designer bekomme,
> Adressen
> Land
Adresszusatz
Anschrift
Label
Name
Ort
Postleitzahl
Region
> Fächer
Wert
> Geräte
Wert
> Hausmeister
Vorname
> JanitorAddresses
> Land
...
> Lehrer
Vorname
> Noten
Wert
> PupilsAddresses
> Land
...
> Raumnummern
Wert
> Schule
> Hausmeister
Vorname
> Schulleiter
Vorname
> Schüler
Vorname
> TeachersAddresses
> Land
...
der Aufbau der einzelnen Klassen,
[code]
class School
{
public Headmaster Head { get; set; } = new Headmaster();
public Janitor Janitor { get; set; } = new Janitor();
public ObservableCollection Pupils { get; } = new ObservableCollection();
public ObservableCollection Teachers { get; } = new ObservableCollection();
}
class Headmaster : PersonBase
{
public ObservableCollection<int> RoomNumbers { get; set; } = new ObservableCollection<int>();
}
class Janitor : PersonBase
{
public ObservableCollection<string> Equipment { get; } = new ObservableCollection<string>();
}
class Pupil : PersonBase
{
public ObservableCollection<int> Grades { get; set; } = new ObservableCollection<int>();
}
class Teacher : PersonBase
{
public ObservableCollection<string> Subjects { get; } = new ObservableCollection<string>();
}
class PersonBase
{
public ObservableCollection<Address> Addresses { get; set; }
public string GivenName { get; set; }
}
public class Address
{
public string Label { get; set; }
public string Name { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string PostalCode { get; set; }
public string Region { get; set; }
public Country Country { get; set; }
}[/code]
die Zuweisung der Datenquelle und wie die Einträge des Dictionaries angelegt werden:
[code]listLabelObject.DataSource = new ObjectDataProvider(new List() { new School() }) { FlattenStructure = true, RootTableName = “Schule” };
listLabelObject.Dictionary.Tables.Add(“School”, “Schule”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Janitor”, “Hausmeister”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Schule.Janitor”, “Schule.Hausmeister”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Head”, “Schulleiter”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Schule.Head”, “Schule.Schulleiter”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Pupil”, “Schüler”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Pupils”, “Schüler”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Teacher”, “Lehrer”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Teachers”, “Lehrer”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Addresses”, “Adressen”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Grades”, “Noten”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Equipment”, “Geräte”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“RoomNumbers”, “Raumnummern”, currentCultureId);
listLabelObject.Dictionary.Tables.Add(“Subjects”, “Fächer”, currentCultureId);
listLabelObject.Dictionary.Identifiers.Add(“GivenName”, “Vorname”, currentCultureId);
listLabelObject.Dictionary.Identifiers.Add(“Address1”, “Anschrift”, currentCultureId);
listLabelObject.Dictionary.Identifiers.Add(“Address2”, “Adresszusatz”, currentCultureId);
listLabelObject.Dictionary.Identifiers.Add(“City”, “Ort”, currentCultureId);
listLabelObject.Dictionary.Identifiers.Add(“PostalCode”, “Postleitzahl”, currentCultureId);[/code]