silverlight - 如何在 DataGrid 列标题上设置 DataContext

标签 silverlight datagrid columnheader

在我的 银光3 用户控件 我正在展示一个基本的 数据网格 控制。我需要以编程方式生成列 如下:

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 的数据上下文设置为“ header ”对象 (具有在 DataTemplate 中引用的“名称”和“数据”属性)。不幸的是,我不能按照建议使用 StackPanel_Loaded 事件 elsewhere ,因为当用户开始列拖放操作时也会调用事件处理程序。

设置 DataGrid 列标题的 DataContext 的正确方法是什么?

最佳答案

事实证明,可以使用 标题属性 (对象类型)作为 DataTemplate 的 DataContext (设置如上图):

Style headerStyle = (Style)Resources["ColumnHeaderStyle"];
DataGridTextColumn col = new DataGridTextColumn();
col.HeaderStyle = headerStyle;
col.Header = myHeaderDataContext; // DataContext for ColumnHeaderStyle
dataGrid.Columns.Add(col);

关于silverlight - 如何在 DataGrid 列标题上设置 DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786773/

相关文章:

css - 如何使用 CSS 设置 Java FX TableView 列标题的样式

java - JDBC 中的表列标题不正确

silverlight - 找不到 async 修饰符所需的所有类型

wpf - 数据网格中的 CanUserSortColumns 不起作用?

actionscript-3 - 如何增加 Flex 3 中的水平网格线厚度

wpf - 卡住WPF DataGrid中的列

mysql - 如何抑制单个 SQL 语句的列标题输出?

银光4.0 : Unhandled Error in Silverlight Application[Async_ExceptionOccured]

c# - 在文本框中单击一次选择点击的单词

silverlight - 我们如何以编程方式更改 Silverlight 控件的 z 索引?