0
votes

How can I specify object in DataGrid binding? My datagrid have ItemsSource="{Binding Source=TripsCollection}" and AutoGenerateColumns="False", and Columns set as:

<DataGrid.Columns>
     <DataGridTextColumn Header="ID" Binding="{Binding TripID}" IsReadOnly="True"></DataGridTextColumn>
     ...
</DataGrid.Columns>

But have errors:

System.Windows.Data Error: 40 : BindingExpression path error: 'TripID' property not found on 'object' ''Char' (HashCode=7209070)'. BindingExpression:Path=TripID; DataItem='Char' (HashCode=7209070); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String').

How can I set object to Trip object?

DataContext class:

private ObservableCollection<Trip> _tripsCollection;
    public ObservableCollection<Trip> TripsCollection
    {
        get { return _tripsCollection; }
        set { _tripsCollection = value; NotifyPropertyChanged("TripsCollection"); }
    }

Trip class:

[Table(Name="Trips")]
public class Trip
{
    private uint _tripID;
    private string _start;
    private string _end;
    private DateTime _date;
    private double _length;
    private string _note;
    private uint _carID = 0;
    private EntityRef<Car> _Car;

    ..and properties for this fields..
}

Setting up DataContext

public MainWindow()
{
    InitializeComponent();
    string connString = @"Data Source=.\SQLEXPRESS; Integrated security=SSPI; Connect Timeout=30"; // User Instance=True";
    conn = new SqlConnection(connString);
    conn.Open();

    LogBookViewModel lbvm = new LogBookViewModel(conn);
    DataContext = lbvm;
}
1
Can we see the class that your DataContext points to?Lews Therin
Sure, but I add only interesting part...Sebastian Busek
Show us where you assign DataContext.kmatyaszek
In MainWindow contructor via DataContext = lbvm; // lbvm = LogBookViewModel class. It's too late for settings up datacontext?Sebastian Busek
This place in constructor is absolutely alright.kmatyaszek

1 Answers

1
votes

You must change binding in ItemsSource, from this:

ItemsSource="{Binding Source=TripsCollection}"

to this:

ItemsSource="{Binding TripsCollection}"

If you will have problem with binding in the future try use snoop.