我需要为DataGrid
(Silverlight 4)的列标题添加工具提示。我将动态生成列数和列标题文本。
GridColumnCreation(....)
{
IEnumerable allHeaderText = /* Linq query */;
}
如何使用此集合设置工具提示?
答案 0 :(得分:25)
这可以比@ Farukh的答案更简单地完成:
<data:DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ToolTipService.ToolTipProperty"
Value="Your tool tip here" />
</Style>
</data:DataGridTextColumn.HeaderStyle>
或者,如果您需要在代码中执行此操作:
var style = new Style(typeof(DataGridColumnHeader));
style.Setters.Add(new Setter(ToolTipService.ToolTipProperty,
"Your tool tip here"));
column.HeaderStyle = style;
答案 1 :(得分:11)
如果它可以帮助任何人。它在使用 TooTip 属性时有效。
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ToolTip" Value="{Binding}"/>
</Style>
</DataGridTextColumn.HeaderStyle>
答案 2 :(得分:7)
如果您不想为标题创建新样式,只需为列标题添加TextBlock并在其上设置工具提示。
<DataGridTextColumn>
<DataGridTextColumn.Header>
<TextBlock Text="ColumnA" ToolTip="ColumnA Tooltip"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
答案 3 :(得分:6)
这可以通过使用DataGridTextColumn&amp; DataGridTextColumn.HeaderStyle。在headerstyle标记中,使用ToolTipService并将内容绑定到生成的动态值。这是一个示例代码......
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="First Name" Binding="{Binding FName}" >
<data:DataGridTextColumn.HeaderStyle>
<Style TargetType="dataprimitives:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Content="{Binding}">
<ToolTipService.ToolTip>
<ToolTip Content="Tooltip First" />
</ToolTipService.ToolTip>
</ContentControl>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</data:DataGridTextColumn.HeaderStyle>
</data:DataGridTextColumn>
<data:DataGridTextColumn Header="Last Name" Binding="{Binding LName}">
<data:DataGridTextColumn.HeaderStyle>
<Style TargetType="dataprimitives:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Content="{Binding}">
<ToolTipService.ToolTip>
<ToolTip Content="Tooltip Second"></ToolTip>
</ToolTipService.ToolTip>
</ContentControl>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</data:DataGridTextColumn.HeaderStyle>
</data:DataGridTextColumn>
<data:DataGridTextColumn Header="City" Binding="{Binding City}">
<data:DataGridTextColumn.HeaderStyle>
<Style TargetType="dataprimitives:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Content="{Binding}">
<ToolTipService.ToolTip>
<ToolTip Content="Tooltip Third"></ToolTip>
</ToolTipService.ToolTip>
</ContentControl>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</data:DataGridTextColumn.HeaderStyle>
</data:DataGridTextColumn>
</data:DataGrid.Columns>
</data:DataGrid>
</Grid>
Custdetails ..就是这样......
class Customer
{
public string LName { set; get; }
public string FName { set; get; }
public string City { set; get; }
}
...数据绑定
List<Customer> customers = new List<Customer>
{
new Customer { LName="Alan", FName="Ameen", City="New York" },
new Customer { LName="Forgeard", FName="Steven", City="Mumbai" },
new Customer { LName="Angur", FName="Paul", City="São Paulo" }
};
dgCustDetails.ItemsSource = customers;
这将显示标题工具提示...使其动态化。将工具提示内容替换为绑定&amp;期望值......