wpf datagrid databind-Methode mit verschachtelten Objekten (wie master-detail)
Ich habe ein einfaches problem, Bindung einer Person an die datagrid in wpf.
Ich habe eine Entität Namens "Benutzer".... und jeder "User" haben eine "Arbeitsgruppe" .. die Beziehung zwischen den beiden ist eins zu eins.
in EF jede Entität "Benutzer" hat eine Arbeitsgruppe Entität in.
wenn ich binden wollen, Users-Auflistung an die datagrid-ich habe keine Ahnung, hot, zu sagen, dass Sie haben, um zum Beispiel Arbeitsgruppen.Titel innerhalb eines datagrid-Spalte
Ich versuche zu binden, auf diese Weise :
XAML:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Users}" HorizontalAlignment="Stretch" Margin="5" Name="dgUserList" VerticalAlignment="Stretch" SelectionChanged="dgUserList_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding FirstName}" Header="FirstName" />
<DataGridTextColumn Binding="{Binding LastName}" Header="LastName" />
<DataGridTextColumn Binding="{Binding Username}" Header="UserName" />
<DataGridTextColumn Binding="{Binding WorkGroup}" Header="Workgroup" />
</DataGrid.Columns>
</DataGrid>
Code Hinter :
Erzeugt eine Eigenschaft wie diese :
public List<User> Users
{
get { return dal.GetUsers(); }
}
tun und die Bindung :
private void BindGrid()
{
dgUserList.ItemsSource = Users;
}
dieser Arbeit Datei mit direkten Eigenschaften der Entität "Benutzer" aber es stellt den Typ der Arbeitsgruppe Entität in der datagrid-Spalte und der Grund liegt auf der Hand. Ich möchte die Titel der Arbeitsgruppe innerhalb
wie kann ich erreichen das ?
jegliche Hilfe würde sehr geschätzt werden
Du musst angemeldet sein, um einen Kommentar abzugeben.
WPF-Bindings Unterstützung von verschachtelten Eigenschaften, so dass man jede der sub-Eigenschaften auf eine Eigenschaft des gebundenen Objekts verwenden Sie einfach normalen ". " - syntax:
Du auch nicht benötigen, um die ItemsSource-zweimal. Wenn Sie die DataContext des DataGrid eingerichtet, als das Fenster (oder UserControl, etc.) deren code-behind-erklärt der Benutzer-Eigenschaft dann die ItemsSource-Bindung in XAML ist ausreichend, und Sie können entfernen Sie die BindGrid Methode. Wenn Sie noch nicht DataContext, der XAML-ItemsSource-Bindung nicht etwas zu tun (Sie können sich wahrscheinlich sehen, eine Fehlermeldung in der Debug-Ausgabe), so können Sie entfernen und lassen Sie das code-behind-Methode kümmern.
Sollten Sie auch erwägen Sie die Verwendung einer ObservableCollection zu erhalten automatische Benachrichtigungen und UI-updates, wenn Elemente Hinzugefügt oder entfernt werden. Da bist du schon mit EF können Sie auch in der Lage sein, um Sie nur der EntityCollection für Benutzer, die auch die gleiche automatische INotifyCollectionChanged-Benachrichtigung.