2015-09-07 57 views
2

我试图创建一个弹出窗口,当用户在单元格中重叠鼠标时出现。我见过一些在线教程和我创建了一个工具提示这样的:如何使用ToolTip for DataGrid?

<DataGrid> 
    <DataGrid.CellStyle> 
     <Style> 
     <Setter Property="DataGridCell.ToolTip"> 
       <Setter.Value>bb</Setter.Value> 
     </Setter> 
     </Style> 
    </DataGrid.CellStyle> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path = 'position'}" ClipboardContentBinding="{x:Null}" Header="Pos." Width="*"/> 
     <DataGridTextColumn Binding="{Binding Path = 'teamName'}" ClipboardContentBinding="{x:Null}" Header="Squadra" Width="*" /> 
     <DataGridTextColumn Binding="{Binding Path = 'points'}" ClipboardContentBinding="{x:Null}" Header="Punti" Width="*"/> 
     <DataGridTextColumn Binding="{Binding Path = 'playedGames'}" ClipboardContentBinding="{x:Null}" Header="Giocate" Width="*"/> 
     <DataGridTextColumn Binding="{Binding Path = 'goals'}" ClipboardContentBinding="{x:Null}" Header="Goal fatti" Width="*"/> 
     <DataGridTextColumn Binding="{Binding Path = 'goalsAgainst'}" ClipboardContentBinding="{x:Null}" Header="Goal subiti" Width="*"/> 
     <DataGridTextColumn Binding="{Binding Path = 'goalDifference'}" ClipboardContentBinding="{x:Null}" Header="Differenza reti" Width="*"/> 
    </DataGrid.Columns> 
</DataGrid> 

唯一的问题是,我不知道如何表达一个单细胞的完整文本,当用户与它的鼠标重叠。特别是当DataGrid是最小分辨率的标题时,单元格没有完全显示出来,这是一个问题,为了避免这种情况,我会确保如果用户在“pos”上重叠了鼠标,那么它显示的是完整的作为工具提示的标题是“位置”。我怎样才能做到这一点?

回答

4

对于DataGrid的细胞:

如果你想有一个工具提示,显示特定的DataGrid单元格的全部内容,当鼠标移动到它,你可以修改你DataGridTextColumn并使用相同的约束力的工具提示:

<DataGridTextColumn Binding="{Binding Path = 'position'}" ClipboardContentBinding="{x:Null}" Header="Pos." Width="*"> 
    <DataGridTextColumn.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Setter Property="ToolTip" Value="{Binding Path = 'position'}" /> 
     </Style> 
    </DataGridTextColumn.CellStyle> 
</DataGridTextColumn> 

或者,如果你想一次全部列设置,您可以绑定到DataGridTextColumn的内容的Text属性:

<DataGrid.CellStyle> 
    <Style TargetType="DataGridCell"> 
     <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text}" /> 
    </Style> 
</DataGrid.CellStyle> 

对于DataGrid中列标题:

<DataGrid.ColumnHeaderStyle> 
    <Style TargetType="DataGridColumnHeader"> 
     <Setter Property="ToolTip" Value="{Binding}" /> 
    </Style> 
</DataGrid.ColumnHeaderStyle> 
+0

是的,但我的意思是,你可以在DataGrid中的其他列做到不为x列创建X工具提示? – Bender

+0

是的,你可以。你可以像上面那样修改你的'DataGrid.CellStyle'。我编辑了包含这个替代方案的答案。 – Ignatius

+0

好的,但是当我将鼠标放在单元格“标题”上时,什么都没有发生。 – Bender