Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
DataGridTextColumn Header Binding an ViewModel
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

Themenstarter:

DataGridTextColumn Header Binding an ViewModel

beantworten | zitieren | melden

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:
Fehler
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?
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

kommt auf das Viewmodel an, woran du bindest
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers