【问题标题】:WPF Binding StringFormat doesn't change the output [duplicate]WPF绑定StringFormat不会改变输出[重复]
【发布时间】:2017-03-03 08:39:33
【问题描述】:

我正在使用 C# 和 .NET Framework 4.6.1 开发 WPF。

我有这个数字 1010,我想把它显示为 1.010(我是西班牙人)。

为此,我修改了 XAML:

<Label x:Name="labelCounterCamera" Margin="5,2" 
Content="{Binding CounterCamera, StringFormat=N{0}}" />

但它显示的数字没有格式:1010。

CounterCamera 是:

public uint CounterCamera
{
    get { return counterCamera; }

    set
    {
        if (!value.Equals(counterCamera))
        {
            counterCamera = value;
            RaisePropertyChangedEvent("CounterCamera");
        }
    }
}

为什么 StringFormat 不起作用?我做错了什么?

【问题讨论】:

  • Label 内容的格式化需要另一种方法:stackoverflow.com/questions/4206612/…
  • 似乎StringFormat 仅在TargetType 的类型为string 时才有效,这里Content 属性的类型为object 我猜。
  • 你需要转义字符串,所以:StringFormat={}{0:N}.

标签: c# wpf string-formatting


【解决方案1】:

使用标签时必须使用 ContentStringformat

<Label x:Name="labelCounterCamera" Margin="5,2" 
   Content="{Binding CounterCamera}"
   ContentStringFormat="{}{0:N}" />

【讨论】:

    【解决方案2】:

    尝试在占位符标记内移动格式字符串。

    Content="{Binding CounterCamera, StringFormat={0:N}}"
    

    {0:N} 而不是N{0}

    【讨论】:

    • 不,它不能编译。
    • 您需要使用 StringFormat={}{0:N} 进行转义
    • @apc 现在,它可以编译,但我没有得到任何格式。
    • 检查即时窗口输出是否有错误,这应该使用 TextBlock 但是我不确定标签,所以请参阅blindmeis 答案
    猜你喜欢
    • 2011-08-17
    • 2011-05-28
    • 2011-03-11
    • 2023-03-20
    • 2017-02-16
    • 2013-03-12
    • 1970-01-01
    • 2011-03-26
    • 2011-06-30
    相关资源
    最近更新 更多