簡體   English   中英

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

[英]How to format string for tooltip in DataGridTextColumn in 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>

是對這個技巧的描述。 引用:

ToolTip是一個內容控件,這意味着它實際上沒有顯示模型。 由於TextBox旨在顯示文本,因此StringFormat綁定屬性的工作方式與廣告一樣。 按鈕是另一個例子。 (兩者都來自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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM