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

标签 c# .net wpf

目前我需要在数据单元格列类型 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>

Here是对这个技巧的描述。引用:

A ToolTip is a content control, which means it doesn't really have a display model. Since the TextBox is designed to display text, the StringFormat binding property works as advertised. Button is another example of this. (Both derive from ContentControl).

思路是在ToolTip中得到StringFormat,需要设置ContentControlTextBlock:

<TextBlock.ToolTip>
    <ToolTip>
        <TextBlock Text="{Binding Path=Age, StringFormat=0\{0\}}" />
    </ToolTip>
</TextBlock.ToolTip>

对你来说最主要的是在ToolTip中设置强制ContentControl,不一定,就像我的例子(使用DataGridTemplateColumn) .

关于c# - 如何在 WPF 的 DataGridTextColumn 中格式化工具提示的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18076620/

相关文章:

wpf - 单击 DataGrid 中的行未选中它

c# - Blazor(客户端)StateHasChanged() 不更新页面

asp.net - 如何从 Javascript 调用 Controller 方法

c# - 总是遍历业务层到达数据层?

c# - 为什么我在 Visual Studio 的对象浏览器中找不到 System.Windows.Controls 命名空间?

c# - 通过C#发送邮件

c# - MVVM 中子属性的 PropertyChanged

c# - 控制台项目和winforms项目在同一个解决方案中

c# - 在 C# 中使用 OleDbDataAdapter 参数

c# - 创建一个新的 AnonymousType 实例