| 

.NET C# Java Javascript Exception

2
Ich habe ein DataGrid und möchte statt den ID´s für Artikel-Typen, den entsprechenden Text anzeigen lassen.

Habe dafür im XAML folgende angelegt

<UserControl.Resources>

<!-- Die Listen für die Comboboxen-->
<CollectionViewSource x:Key="ArtTypes" Source="{Binding ArticleTypesList}" />

</UserControl.Resources>


Hier der entsprechende Code aus dem ViewModel

''' <summary>
''' Verwaltet die Liste der Einträge
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property ArticleTypesList As ObservableCollection(Of Entities.Articles.GroupList)
Set(value As ObservableCollection(Of Entities.Articles.GroupList))

End Set
Get
If _ArticleTypesList Is Nothing Then
_ArticleTypesList = _DomainModel.GetGroupList(CommonEnums.Groups.ArticleTypes)
Me.OnPropertyChanged("ArticleTypeList")
End If
Return _ArticleTypesList
End Get
End Property
Private _ArticleTypesList As ObservableCollection(Of Entities.Articles.GroupList)


Nun wollte ich mit folgenden Code im DataGrid erreichen, dass die Werte angezeigt werden

<DataGridComboBoxColumn Header="Artikel-Typ" Width="100"
ItemsSource="{Binding Source={StaticResource ArtTypes}}"
DisplayMemberPath="Value"
SelectedItemBinding="{Binding Type, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>


Leider bleiben die Zellen aber leer. Wenn ich dann aber auf die Spalte gehe und auf die Zelle drücke, geht die Combobox mitsamt der Werte auf.

Vielleicht als Hinweis: Die EigenschaftUnitType ist eine NavigationsEigenschaft im EF. Ist es überhaupt möglich auf solche Eigenschaften zu binden?

Danke für eine Antwort und einen Tipp im Vorraus

lg
19.06.2013
MyKey0815 1,6k 2 9
Ich persönlich versuche es immer zu vermeiden, das Entitäten aus einem OR-Mapper den View direkt erreichen. Dafür sind in meine Augen die Models dar, die eben die Daten abbilden, die der View benötigt.

2.) Das OnPropertyChanged im Getter ist so gewollt? Dies sollte eher in den Setter.
lbm1305 20.06.2013
2 Antworten
0
Das die ComboBox erst angezeigt wird, wenn man in die Zelle klickt, ist denke ich ein Feature des DataGrids, damit nicht hunderte ComboBoxen angezeigt werden.
Wird denn ein Wert angezeigt, nachdem du Ihn ausgewählt hast?

Aktiviere mal das Tracing is VS, was werden dir denn da für Fehler angezeigt?
19.06.2013
kleffel 654 1 9
0
Eventuell mal folgendes probieren.

<DataGridTemplateColumn Width="200">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox DisplayMemberPath="Name" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=DataContext.Groups}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>


Wobei Groups Deiner "GroupList" entspricht und der DisplayName das entsprechende Property der Klasse "Group" ist. (Nur zu Demozwecken)
20.06.2013
lbm1305 849 1 8
lbm1305 849 1 8

Stelle deine .net-Frage jetzt!