如何将wpf contentstringformat用于多种格式?

如何将wpf contentstringformat用于多种格式?,wpf,format,tooltip,Wpf,Format,Tooltip,有没有一种方法可以将ContentStringFormat用于工具提示中的多种格式 ContentStringFormat="{}{0:N0}{0:P}" <Slider.ToolTip> <ToolTip Content="{Binding Path=PlacementTarget.Value, RelativeSource={RelativeSource Mode=Self}}" ContentStringFormat="{}{0:N0}" /> </Slid

有没有一种方法可以将ContentStringFormat用于工具提示中的多种格式

ContentStringFormat="{}{0:N0}{0:P}"

<Slider.ToolTip> <ToolTip Content="{Binding Path=PlacementTarget.Value, RelativeSource={RelativeSource Mode=Self}}" ContentStringFormat="{}{0:N0}" /> </Slider.ToolTip>
它显示505000.00%,而不是50%

提前感谢

当您使用
p
p
时,显示的数字首先乘以100,然后格式化为带有尾随百分比符号的浮点数。紧跟在
P
之后的精度说明符,例如
P2
控制小数位数。看

因此,将值
0.5
格式化为格式
P2
将导致字符串“50.00%”:

您似乎要做的是将值50显示为数字(
N0
),后跟一个百分比(
p
)。结果是字符串“50 5000.00%”(因为
P
的默认精度为2)。

使用

P
P
时,显示的数字首先乘以100,然后格式化为带有尾随百分比符号的浮点数。紧跟在
P
之后的精度说明符,例如
P2
控制小数位数。看

因此,将值
0.5
格式化为格式
P2
将导致字符串“50.00%”:


您似乎要做的是将值50显示为数字(
N0
),后跟一个百分比(
p
)。结果是字符串“50 5000.00%”(因为
P
的默认精度为2)。

这里有三个问题:

  • 如果显示的是505而不是50,则输入的数字为5.05,但应为0.505
  • 第二,如果您希望0.505显示为50%,则必须首先对其进行四舍五入
  • 最后,您必须使用
    P0
综上所述:

//code
public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();
    DataContext = this;
  }

  private double MyActualNumber
  {
    get { return 0.505; }
  }

  public double Number
  {
    get { return System.Math.Round( 100.0 * MyActualNumber ) / 100.0; }
  }
}

//xaml
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Label Content="{Binding Path=Number}" ContentStringFormat="{}{0:P0}"/>
</Window>
//代码
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
DataContext=this;
}
私人双MyActualNumber
{
获取{return 0.505;}
}
公众双倍号码
{
获取{return System.Math.Round(100.0*MyActualNumber)/100.0;}
}
}
//xaml

这里有三个问题:

  • 如果显示的是505而不是50,则输入的数字为5.05,但应为0.505
  • 第二,如果您希望0.505显示为50%,则必须首先对其进行四舍五入
  • 最后,您必须使用
    P0
综上所述:

//code
public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();
    DataContext = this;
  }

  private double MyActualNumber
  {
    get { return 0.505; }
  }

  public double Number
  {
    get { return System.Math.Round( 100.0 * MyActualNumber ) / 100.0; }
  }
}

//xaml
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Label Content="{Binding Path=Number}" ContentStringFormat="{}{0:P0}"/>
</Window>
//代码
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
DataContext=this;
}
私人双MyActualNumber
{
获取{return 0.505;}
}
公众双倍号码
{
获取{return System.Math.Round(100.0*MyActualNumber)/100.0;}
}
}
//xaml

我们需要更多细节。你想要实现什么?你已经试过什么了?出了什么问题?我想用50%的百分比来显示工具提示数字。我想用{0:P}来表示百分比。但是还有另一种格式,如{0:N0}。如果我用{0:P}替换{0:N0},会显示百分比,但数字看起来不像预期的那样。抱歉,信息仍然不够-请编辑您的答案,显示工具提示文本是什么,以及内容的xaml-例如,如果您使用
Content=“{Binding Path=num}”ContentStringFormat=“{{0:N0}{0:P}”
和num 0.5,这表明
150%
这是正确的。谢谢提醒,但没有任何建议对我有帮助。这仍然是一个悬而未决的问题。因此,我不能接受任何无助于解决问题的事情。你要么在你的问题中更加精确,要么问我们你不明白答案的哪一部分。你应该用前面的@来称呼我们的名字,例如我的@克莱门斯。否则我们不会收到你的评论的通知。我们需要更多的细节。你想要实现什么?你已经试过什么了?出了什么问题?我想用50%的百分比来显示工具提示数字。我想用{0:P}来表示百分比。但是还有另一种格式,如{0:N0}。如果我用{0:P}替换{0:N0},会显示百分比,但数字看起来不像预期的那样。抱歉,信息仍然不够-请编辑您的答案,显示工具提示文本是什么,以及内容的xaml-例如,如果您使用
Content=“{Binding Path=num}”ContentStringFormat=“{{0:N0}{0:P}”
和num 0.5,这表明
150%
这是正确的。谢谢提醒,但没有任何建议对我有帮助。这仍然是一个悬而未决的问题。因此,我不能接受任何无助于解决问题的事情。你要么在你的问题中更加精确,要么问我们你不明白答案的哪一部分。你应该用前面的@来称呼我们的名字,例如我的@克莱门斯。否则我们将不会收到您的评论通知。将“50”和“5000.00%”连接起来,看看您得到了什么。您的意思是什么?如果我把
{{0:N0}{0:P0}
放进去,它会显示
150%
。不是
50 5000.00%
。如果您查看她的XAML,您会看到她正在显示一个滑块值,默认范围为0到100。她的示例只是将值50.0格式化为
{0:N0}{0:P}
。结果是“50 5000.00%”。她要么忽略了两个数字之间的空格,要么她的格式实际上是
{0:N0}{0:P}
。将“50”和“5000.00%”串联起来,看看你得到了什么。你是什么意思?如果我把
{{0:N0}{0:P0}
放进去,它会显示
150%
。不是
50 5000.00%
。如果您查看她的XAML,您会看到她正在显示一个滑块值,默认范围为0到100。她的示例只是将值50.0格式化为
{0:N0}{0:P}
。结果是“50 5000.00%”。她要么忽略了两个数字之间的空格,要么她的格式实际上是
{0:N0}{0:P}