如何格式化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。有什么想法吗?

如何格式化WPF中DataGridTextColumn中工具提示的字符串

试试这个:

<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>