Generische ObservableCollection für alle meine Einheiten
Benutze ich Entity Framework
Zugriff auf meine Daten auf SQL Server
und ich brauche für die Anzeige von Daten aus meiner SQL-Tabellen in WPF DataGrid
. Ich weiß, wie zu tun, dass jeder meiner Personen: ich erstelle ein View
mit DataGrid
:
<DataGrid ItemsSource="{Binding Rows}" SelectedItem="{Binding Row}" />
sowie ViewModel
mit ObservableCollection<PERSONS>
als öffentliches Eigentum:
public class DictionaryViewModel : ViewModelBase
{
private ObservableCollection<PERSONS> rows;
public ObservableCollection<PERSONS> Rows
{
get
{
return rows;
}
set
{
rows = value;
RaisePropertyChanged("Rows");
}
}
public DictionaryViewModel()
{
Rows = new ObservableCollection<PERSONS>(myDataContext.PERSONS);
}
}
Meine Frage ist wie ich, dass für eine beliebigen Person? Gibt es generische Typ für Entitäten? Es wäre schön, etwas zu schreiben wie diese:
public class DictionaryViewModel : ViewModelBase
{
private ObservableCollection<GenericType> rows;
public ObservableCollection<GenericType> Rows
{
get
{
return rows;
}
set
{
rows = value;
RaisePropertyChanged("Rows");
}
}
public DictionaryViewModel(GenericType type)
{
Rows = new ObservableCollection<type>(...);
}
}
Ich wirklich nicht wollen, erstellen Sie eine separate ViewModel
für jede Einheit, die ich habe.
Dank.
- Können Sie bitte bestätigen, ob Sie nicht wollen, erstellen Sie separate ViewModel oder ObservableCollection für jede Entität?
ViewModel
wie ich bereits in meiner Frage. Ich würde gerne eineViewModel
dauert die entity als parameter- Gut im Bearbeiten meiner Antwort..bitte warten Sie, bis 2 Pastillen
- Ja, jetzt können Sie meine Antwort.. ich habe editiert es nach Ihrem Bedarf.
- wollen Sie eine Instanz der konkreten
ViewModel
wo Sie ausfüllen können und der mischen ein Typ? oder x-Instanzen, wo jeder ist stark typisiert? - Ich füllen möchten
Rows
durchPERSONS
oderDEPARTMENTS
. E. g. Benutzer klicken auf eine Schaltfläche "Benutzer Verwalten".DictionaryView
ist etwa zu öffnen, woDataGrid
gefüllt istPERSONS
. Die gleiche Sache mitDEPARTMENTS
. Ich will nicht, Sie zu mischen, das ist unnatürlich 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht einfach die Einführung eines generischen parameter der Klasse?
Sie einfach zu erstellen 2 Instanzen (eine für
Person
man fürDepartment
) und implementieren eine gateway-Logik zu binden, die richtige Quelle.edit:
Wenn Sie möchten, verwenden Sie eine Instanz mit verschiedenen Arten ... vergessen Sie es! die Einführung einer Basis-Klasse für
Person
undDepartment
definieren Sie die Allgemeinen Eigenschaften und Verwendung dieser neuen Art als Ihr generic-Einschränkung.Ja, können Sie das tun. Sie brauchen nur zu verwenden Objekt in Platz der Generische Typ. Ihr code kann wie folgt Aussehen
Nun Reihen zu halten, kann jede beliebige Person.
object
können Sie alles, um die Sammlung und sogar mischenint
mitstring
(... und so weiter) - die Frage ist ein bisschen unklar für mich...Rows
hält eine Reihe vonobjects
, das ist nicht das, was ich brauche, eigentlich. Aber danke für die HilfeJa, es ist ein generischer
ObservableCollection<T>
.ObservableCollection<T> Class
Nutzung