私のSilverlight3ユーザーコントロールでは、基本的なDataGridコントロールを示しています。次のようにプログラムで列を生成する必要があります。
Style headerStyle = (Style)Resources["ColumnHeaderStyle"];
DataGridTextColumn col = new DataGridTextColumn();
col.HeaderStyle = headerStyle;
dataGrid.Columns.Add(col);
スタイルは次のように定義されます。
<Style x:Name="ColumnStyle" x:Key="ColumnHeaderStyle"
TargetType="prim:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Loaded="StackPanel_Loaded">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Data}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
ヘッダーのデータコンテキストを「header」オブジェクト(DataTemplateで参照される「Name」および「Data」プロパティを使用)に設定したいと思います。残念ながら、他の場所で提案されているようにStackPanel_Loadedイベントを使用することはできません。これは、ユーザーが列のドラッグアンドドロップ操作を開始したときにイベントハンドラーも呼び出されるためです。
DataGrid列ヘッダーのDataContextを設定する正しい方法は何ですか?