完全在代码后面创建DataGrid列工具提示

时间:2012-03-30 08:00:28

标签: c# silverlight datagrid

我正在尝试完全在代码隐藏文件中创建datagrid工具提示。 工具提示XAML代码如下所示:

<data:DataGrid>
<data:DataGrid.Columns>
    <data:DataGridTextColumn Header="My Header">
        <data:DataGridTextColumn.HeaderStyle>
            <Style TargetType="dataprimitives:DataGridColumnHeader">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <ContentControl Content="{Binding}">
                                <ToolTipService.ToolTip>
                                    <ToolTip Content="My Tooltip"></ToolTip>
                                </ToolTipService.ToolTip>
                            </ContentControl>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </data:DataGridTextColumn.HeaderStyle>
    </data:DataGridTextColumn>
</data:DataGrid.Columns>

我被困在<Setter Property="ContentTemplate">。我目前的代码:

                Style style = new Style();
                style.TargetType = typeof(DataGridColumnHeader);
                Setter setter = new Setter();
                setter.Property = DependencyProperty.Register("ContentTemplate", typeof(DataTemplate), typeof(FrameworkElement), null);

任何人都可以向我展示在代码背后实现此部分的示例:

<Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <ContentControl Content="{Binding}">
                                    <ToolTipService.ToolTip>
                                        <ToolTip Content="My Tooltip"></ToolTip>
                                    </ToolTipService.ToolTip>
                                </ContentControl>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>

谢谢!

2 个答案:

答案 0 :(得分:3)

获得要添加工具提示的列的句柄后,请尝试以下操作。

var style = new Style(typeof(DataGridColumnHeader));
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty, "Customer Name"));

现在您已经定义了工具提示值,那么您可以将列的HeaderStyle属性设置为这样......

dgCustDetails.Columns[0].HeaderStyle = style;

其中dgCustDetails是数据网格的名称。

答案 1 :(得分:1)

Style stylecell = new Style(typeof(DataGridCell));

Binding descriptionbinding = new Binding("SRNO") { StringFormat = "{0}" };

stylecell.Setters.Add(newSetter(ToolTipService.ToolTipProperty,descriptionbinding));

gridItem.Columns[0].CellStyle = stylecell;