Hallo Community,
Ich versuche gerade die Spalten Titel eines DataGrids an das ViewModel zu binden.
Jedoch funktioniert das ganze nicht richtig.
Nachdem Google sofort einige lösungen ausgespuckt hat, habe ich es noch immer nicht zum laufen bekommen. Hier mal die Lösungen die ich versucht habe:
<DataGrid ItemsSource="{Binding ErrorRecords}" Background="Transparent" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ErrorNumber}" Header="{Binding Path=DataContext.Language[ErrorNumber], RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}"/>
<DataGridTextColumn Binding="{Binding LastOccurance}" Header="{Binding Path=Language[LastOccurence]}"/>
<DataGridTextColumn Binding="{Binding ErrorCode}" Header="{Binding Path=DataContext.Language[ErrorCode],ElementName=LayoutRoot}"/>
<DataGridTextColumn Binding="{Binding ErrorMessage}" Header="{Binding DataContext.Language[ErrorMessage], Source={StaticResource Proxy}}" />
</DataGrid.Columns>
</DataGrid>
Und die Binding Errors:> Fehlermeldung:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Language[LastOccurence]; DataItem=null; target element is 'DataGridTextColumn' (HashCode=44175353); target property is 'Header' (type 'Object')
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=DataContext.Language[ErrorCode]; DataItem=null; target element is 'DataGridTextColumn' (HashCode=36366333); target property is 'Header' (type 'Object')
System.Windows.Data Error: 3 : Cannot find element that provides DataContext. BindingExpression:(no path); DataItem=null; target element is 'FrameworkElement' (Name=''); target property is 'DataContext' (type 'Object')
Wie bekomme ich das Binding hin?
kommt auf das Viewmodel an, woran du bindest
Der frühe Apfel fängt den Wurm.
An ein ObservableDictionary.
Habe bereits eine lösung gefunden.
<DataGrid ItemsSource="{Binding ErrorRecords}" Background="Transparent" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ErrorNumber}" >
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.Language[ErrorNumber], RelativeSource={RelativeSource AncestorType=UserControl}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
Warum die erste variante im OP nicht funktioniert hat weiß ich nicht.