如何格式化WPF中DataGridTextColumn中工具提示的字符串
本文关键字:工具提示 字符串 DataGridTextColumn 格式化 WPF | 更新日期: 2023-09-27 18:26:31
当前我需要格式化数据单元格列类型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
。有什么想法吗?
试试这个:
<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>
下面是对这个技巧的描述。报价:
工具提示是一个内容控件,这意味着它实际上没有显示模型。由于TextBox是为显示文本而设计的,因此StringFormat绑定属性的工作原理与所宣传的一样。Button就是另一个例子。(两者都源自ContentControl)。
这个想法是,对于在ToolTip
中获得的StringFormat
,您需要使用TextBlock
:设置ContentControl
<TextBlock.ToolTip>
<ToolTip>
<TextBlock Text="{Binding Path=Age, StringFormat=0'{0'}}" />
</ToolTip>
</TextBlock.ToolTip>
对您来说,主要的事情是在ToolTip
中设置力ContentControl
,而不一定像我的示例(使用DataGridTemplateColumn
)中那样。
我在DataGridHyperlinkColumn
上遇到了类似的问题,我不想更改为DataGridTemplateColumn
,所以我想出了一个我认为更好的解决方案。您所要做的就是打破<Setter...>
中Value
的设置,并将内容放入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>