を にバインドするDataGrid
とItemsSource
、ObservableCollection<Quote>
それぞれがオブジェクトをそのままDataGridRow
使用して構築されます(データ層)。Quote
DataContext
デフォルトでは、DataGrid はデータ項目の各プロパティの列を自動的に生成するため、この場合はTicker
、、、Rating
およびSender
.
にバインドされた列を含むAutoGenerateColumns="False"
独自の を設定および定義することで、それをオーバーライドできます。<DataGrid.Columns>
Sender.Email
<DataGrid ItemsSource="{Binding Quotes}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Ticker" Binding="{Binding Ticker}"/>
<DataGridTextColumn Header="Rating" Binding="{Binding Rating}"/>
<DataGridTextColumn Header="Email" Binding="{Binding Sender.Email}"/>
</DataGrid.Columns>
</DataGrid>
または、暗黙的な DataTemplate を使用して、プロパティSender
を含む文字列でオブジェクトを描画するように WPF に指示できます。Email
<DataGrid ItemsSource="{Binding Quotes}">
<DataGrid.Resources>
<DataTemplate TargetType="{x:Type local:People}">
<TextBlock Text="{Binding Email}" />
</DataTemplate>
</DataGrid.Resources>
</DataGrid>
2 つのうち、編集などのために余分なコードを作成する必要がないため、状況に応じて最初のものを選択します。
行がクリックされたときにデータ オブジェクトを取得するには、単に行の をチェックアウトするDataContext
か、にバインドしますCommandParameter
。"{Binding }"