如何将wpf contentstringformat用于多种格式?
有没有一种方法可以将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="{}{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}
。