目前我需要在数据单元格列DataGridTextColumn
中格式化工具提示字符串
这是我的尝试:
<DataGrid.Columns>
<DataGridTextColumn Header ="Count Number">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip"
Value="{Binding CountNumber, StringFormat={}{0:00}}">
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
<DataGridTextColumn.Binding>
<Binding Path="CountNumber" StringFormat="{}{0:00}" UpdateSourceTrigger="PropertyChanged" />
</DataGridTextColumn.Binding>
</DataGridTextColumn>
<!-- other columns-->
</DataGrid.Columns>
我也尝试过:
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip" Value="{Binding CountNumber}"/>
<Setter Property="ToolTip.ContentStringFormat" Value="{}{0:00}"/>
</Style>
</DataGridTextColumn.CellStyle>
但他们都不行。
例如,数字3
应显示为03
。有什么想法吗?
答案 0 :(得分:5)
试试这个:
<DataGridTemplateColumn Width="260" Header="MySample">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Age}">
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Text="{Binding Path=Age, StringFormat=0\{0\}}" />
</ToolTip>
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Here是对这个技巧的描述。引用:
ToolTip是一个内容控件,这意味着它实际上没有显示模型。由于TextBox旨在显示文本,因此StringFormat绑定属性的工作方式与广告一样。按钮是另一个例子。 (两者都来自ContentControl)。
我的想法是在StringFormat
中获得ToolTip
,您需要将ContentControl
设为TextBlock
:
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Text="{Binding Path=Age, StringFormat=0\{0\}}" />
</ToolTip>
</TextBlock.ToolTip>
最重要的是在ContentControl
中设置强制ToolTip
,不一定,如我的示例所示(使用DataGridTemplateColumn
)。
答案 1 :(得分:1)
我遇到类似DataGridHyperlinkColumn
的问题,我不想改为DataGridTemplateColumn
所以我想出了一个更好的解决方案。您所要做的就是在Value
中细分<Setter...>
的设置,并将内容放在TextBlock
中,如下所示:
<DataGridTextColumn Header ="Count Number">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding CountNumber, StringFormat={}{0:00}}" />
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
<DataGridTextColumn.Binding>
<Binding Path="CountNumber" StringFormat="{}{0:00}" UpdateSourceTrigger="PropertyChanged" />
</DataGridTextColumn.Binding>
</DataGridTextColumn>