0

DataGridバインディングでオブジェクトを指定するにはどうすればよいですか? 私のデータグリッドにはItemsSource="{Binding Source=TripsCollection}"AutoGenerateColumns="False"および列が次のように設定されています。

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

しかし、エラーがあります:

System.Windows.Data エラー: 40: BindingExpression パス エラー: 'TripID' プロパティが 'object' ''Char' (HashCode=7209070)' に見つかりません。BindingExpression:Path=TripID; DataItem='Char' (HashCode=7209070); ターゲット要素は 'TextBlock' (Name='') です。ターゲット プロパティは 'Text' (タイプ 'String') です。

オブジェクトを Trip オブジェクトに設定するにはどうすればよいですか?

DataContext クラス:

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

旅行クラス:

[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..
}

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;
}
4

1 に答える 1

1

これから、ItemsSource のバインディングを変更する必要があります。

ItemsSource="{Binding Source=TripsCollection}"

これに:

ItemsSource="{Binding TripsCollection}"

将来バインドに問題が発生する場合は、snoopを使用してみてください。

于 2012-09-30T15:31:30.513 に答える