Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Fr 29.10.10 15:12 
In meiner Anwendung beziehe ich Quelldaten für meine Combobox (innerhalb eines Datagrid) aus folg. Klasse:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Database_Test
{
    public class Standardspalten:List<string>
    {
        public Standardspalten()
        {
            this.Add("VSNR");
            this.Add("Vorname");
            this.Add("Nachname");
            this.Add("Beitrag");
            
        }
    }
}


In XAML habe ich die Klasse als Resource hinzugefügt. Die Daten sind in der ComboBox abrufbar. Bis hier ist alles perfekt.

Wenn ich allerdings einen Eintrag in der ComboBox auswähle, wird dieser nicht gespeichert; sobald ich im Datagrid auf eine neue Zeile klicke, ist die ComboBox wieder leer.

Jetzt habe ich rausgefunden, dass wohl die SelectedItemBinding Property hier gesetzt werden muss. Wenn ich die allerdings auf die Resource setze, kommt eine Fehlermeldung. Das Programm läuft zwar sauber durch, trotzdem erscheint die Fehlermeldung im Ausgabefenster.

System.Windows.Data Error: 40 : BindingExpression path error: 'Standardspalten' property not found on 'object' ''DataRowView' (HashCode=52447826)'. BindingExpression:Path=Standardspalten; DataItem='DataRowView' (HashCode=52447826); target element is 'DataGridCell' (Name=''); target property is 'CellContent' (type 'String')

Der Grund für die Fehlermeldung ist mir auch einigermaßen klar. Die o.g. Klasse kann den ausgewählten Wert nicht speichern. Aber was soll ich als Ziel für SelectedItemBinding festlegen.

Hier noch der Auszug des Datagrid aus meiner XAML Datei:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
<DataGrid Name="data_Mapping"
                              Grid.Column="1"
                              Grid.Row="1"
                              AutoGenerateColumns="False"
                              IsReadOnly="False"
                              ItemsSource="{Binding}"
                              CanUserAddRows="False"
                              >
                        <DataGrid.Columns>
                            <DataGridComboBoxColumn Header="Standard"
                                                    Width="Auto"
                                                    ItemsSource="{Binding Source={StaticResource Standardspalten}}"
                                                    SelectedItemBinding="{Binding Path=Standardspalten}"
                                                    />
                            <DataGridTextColumn Header="Import" 
                                                Width="Auto"
                                                Binding="{Binding Import}"
                                                IsReadOnly="True"
                                                />
                        </DataGrid.Columns>
                        
                    </DataGrid>


Schon vorab vielen Dank für Eure Hilfe

Gruß
Frank

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Moderiert von user profile iconKha: XML-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 30.10.10 12:37 
Das mit SelectedItemBinding hast du falsch verstanden; du musst dort die Spalte der DataTable angeben, auf die sich die Combobox überhaupt beziehen soll. Woher sollte sie das sonst wissen?

PS: WPF, aber kein O/RM? Das ist gelinde gesagt ungewöhnlich ;) .

_________________
>λ=