Zugriff auf Steuerelemente in DataGridTemplateColumn
-
Donnerstag, 16. August 2012 19:08
Hallo,
ich habe ein DataGrid in dem ich eine TemplateColumn erstellt habe.
Wie kann ich nun auf die Steuerelemente in dem DataTemplate zugreifen, da dieses scheinbar nicht mit der x:Name-Property geht? Wieso kann man das Steuerelement nicht mittels Namen erreichen?
<DataGrid x:Name="datagrid" AutoGenerateColumns="False" ItemsSource="{Binding Path=liste}"> <DataGrid.Columns> <DataGridTemplateColumn Header="Spalte 1"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock FontFamily="Arial" Text="{Binding Spalte1}" TextAlignment="Center"> </TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <ComboBox x:Name="combobox" /> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>Gruß Markus
Alle Antworten
-
Freitag, 17. August 2012 14:39
Hi,
von wo aus möchtest Du denn auf ein benanntes Element zugreifen? Wenn Du in Deinem DataGrid 200 Datensätze hast, dann wären dort 200 Elemente mit dem Namen "combobox" enthalten ... das kann ja nicht gehen. Darum wird ein NameScope gesetzt, der definiert, in welchem Bereich der Name gilt (und in dem er eindeutig sein muss).
Von außen kannst Du über diesen Namen also nicht zugreifen. Innerhalb des DataTemplates könntest Du natürlich auf das Element zugreifen (zB in einem Trigger).
Gruß
Jürgen -
Sonntag, 19. August 2012 11:29
Moin,
Also ich möchte in dem Datagrid eine Spalte haben, in der ich zum editieren eine ComboBox habe. Diese Combobox soll mit Daten aus einer Datenbank gefüllt werden (aus einer anderen Tabelle, der Datenbank aus denen die anderen Daten für das DataGrid geladen werden).
Ich habe also zwei Tabellen (Lieferantenliste und Teileliste). Jetzt sollen in der Teileliste alle Daten zu einem Einzelteil eingetragen werden. Eine Spalte davon ist der Lieferant, welcher über eine Combobox zu wählen sein sollte. Die Daten für die Combobox ist die Spalte "Firmenname" aus der Tabelle "Lieferantenliste".
Wie bekomme ich nun diese Daten in die Combobox?
Gruß Markus
-
Sonntag, 19. August 2012 13:45
Deine Lieferantenliste ist für die Teileliste eine Nachschlage- oder Master-Tabelle zur Teileliste als Child-Tabelle. Wie soll in der Child-Tabelle (Teileliste) der Verweis auf den betreffenden Eintrag in der Mastertabelle (Lieferantenliste) aussehen?Üblich ist so etwas über einen Fremdschlüssel zu machen. In der Mastertabelle gibt es eine Spalte mit unikaten Werten, z.B. ID als Autowert. In der Child-Tabelle (Teileliste) gibt als eine Fremdschlüsselspalte mit dem Wert der ID des Datensatzes, auf den verwiesen wird. In der Oberfläche wird aber der Langtext des Datensatzes aus der Mastertabelle angezeigt. Das wird realisiert, indem an Itemssource die Liste (Mastertabelle) gebunden wird, über Displaymember die Eigenschaft festgelegt wird, deren Inhalt in der ComboBox anzuzeigen ist, über Valuemember die Eigenschaft festgelegt wird, die den unikaten Wert in der Master-Tabelle enthält, der als Fremdschlüssel genutzt wird. SelectedValue wird dann an die Eigenschaft in der Child-Tabelle gebunden, die als Fremdschlüssel zur Master-Tabelle dient.Für das DataGrid gibt es die DataGridCombobox-Spalte, die analog einer einfachen ComboBox arbeitet.--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Robert BreitenhoferMicrosoft Contingent Staff, Moderator Freitag, 24. August 2012 16:44
- Als Antwort markiert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Dienstag, 28. August 2012 14:45
-
Sonntag, 19. August 2012 19:58
Hallo,
ich werds in den nächsten Tagen mal ausprobieren.
Den Fremdschlüssel zu setzen sollte kein Problem sein, aber der rest ist mir noch ein wenig unklar.
Gruß Markus
-
Freitag, 24. August 2012 16:44Besitzer
Hallo Numax09,
Hat Dir die Antwort geholfen?
Grüße,
RobertRobert Breitenhofer, MICROSOFT

Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Dienstag, 28. August 2012 14:45Besitzer
Hallo Numax09,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT

Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

