在我的Silverlight 3用户控件中,我展示了一个基本的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>
我想将标头的数据上下文设置为“标头”对象(具有在 DataTemplate 中引用的“名称”和“数据”属性)。不幸的是,我不能使用其他地方建议的 StackPanel_Loaded 事件,因为当用户启动列拖放操作时也会调用事件处理程序。
设置 DataGrid 列标题的 DataContext 的正确方法是什么?