データテーブルを持っていて、データテーブルの各カラムにデータグリッド内の各datagridtextcolumnをバインドしたいと思っています。Datagridtextcolumnはデータテーブルにバインドします
私のコードは私のXAML側
<Grid >
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=.}" Name="dgrid" SelectionChanged="dgrid_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Path=id}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
そして、私のコード側によって
public class Packet
{
public Header header { get; set; }
public Frame frame { get; set; }
public Tail tail { get; set; }
public String id { get; set; }
public Packet(String id,Header header, Frame frame, Tail tail)
{
this.id = id;
this.header = header;
this.frame = frame;
this.tail = tail;
}
}
以下の通りである、DSは、一のデータテーブルを有するデータセットです。各行は、ヘッダーフレームのテールとIDに対応するパケット4列です。私は最初に正しくIDを取得しようとしています。しかし、ID番号はデータグリッドに表示することはできません。
dgrid.DataContext = ds.Tables[0];
xaml側でdatagridtextcolumnを使用しないと、実際に正しいデータが表示されます。しかし、私が望んでいたのは、xaml側のデータテーブルへのバインディングを行うことです。
問題ありません。デバッグウィンドウでバインディングに関する最初の例外がありますか?または 'ds.Tables [0]'のインスタンスが正しく初期化されているかどうか確認しましたか? –
@edelweiss DataGridのバインディングを削除してみてください。 –
@jwJung私はそれを実行すると、私は出力ウィンドウでこれを見た。 System.Windows.Dataエラー:40:BindingExpressionパスエラー: 'id'プロパティが 'object' '' DataRowView '(HashCode = 8381127)'に見つかりません。 BindingExpression:Path = id; DataItem = 'DataRowView'(HashCode = 8381127);ターゲット要素は 'TextBlock'(Name = '')です。 targetプロパティは 'Text'(型 'String')です。つまり、それは実際に正しく結びついていないのですか? – edelweiss