【问题标题】:XAML special style for decimal places [closed]小数位的 XAML 特殊样式 [关闭]
【发布时间】:2015-03-10 07:25:04
【问题描述】:

我有这个数字 1234.456,它有 3 个小数位,这对我的用户来说可能非常令人困惑,他们中的一些人将这个数字解释为千位,但他们仍然需要它。

如何设置这些数字的样式?

有点像这张图片:

注意:可能以其他颜色显示小数位。

非常感谢任何帮助。

编辑1:我想要的只是一个Style (xaml) 模板来应用,编辑模式必须显示正常的数字以允许用户修改它。现在我完全迷路了,我只是个初学者。

注意:我使用 MVVM 作为主要架构,我的 XAML 模板需要绑定

【问题讨论】:

  • Decimal point 是大多数用户期望看到的。但是这个符号是依赖于文化的(一些使用,,另一些使用.)。输出考虑到用户文化设置的十进制值(使用ToString的适当重载),这样用户就不会混淆
  • @Sinatr 超载时如何上标?
  • @Blam,不明白这个问题。您的意思是如何使用转换器来显示用户区域设置友好的值或如何创建 xaml 元素扩展?
  • @Sinatr 用户要求上标,你说使用适当的重载。
  • @Blam,我没有提供答案,而是以 do not do that 风格的评论 :) (不知道单词 superscript 并错误地理解了您的评论,对不起!)。

标签: c# wpf xaml


【解决方案1】:

您必须在页面上放置两个元素,一个用于整数部分,一个用于小数部分。然后按照您的预期设计它们。像这样的:

<TextBlock x:Name="IntPart" Text="1234." FontSize="12" />
<TextBlock x:Name="DecPart" Text="456" Margin="0,0,0,3" FontSize="8"  />

使用绑定:

<TextBlock Text="{Binding IntPart}" FontSize="12" />
<TextBlock Text="{Binding DecPart}" Margin="0,0,0,3" FontSize="8"  />

使用绑定和转换器

<my:IntPartConverter x:Key="MyIntPartConverter" />
<my:DecPartConverter x:Key="MyDecPartConverter" />

<TextBlock Text="{Binding MyNumber, Converter={StaticResource MyIntPartConverter}}" FontSize="12" />
<TextBlock Text="{Binding MyNumber, Converter={StaticResource MyDecPartConverter}}" Margin="0,0,0,3" FontSize="8"  />

C#

public class IntPartConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (int)value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

public class DecPartConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (double)value - (int)value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

【讨论】:

  • 如果你想使用绑定,你可以使用转换器来提取小数点的左右。
  • 确实如此。我选择仅显示此示例的静态数据,因为问题更多是关于我所知道的样式。
  • 感谢您的帮助,我正在寻找Style 申请,并且需要绑定。
  • 我已经更新了我的答案,以展示您如何按照 Blam 描述的转换器和 MyNumber 的单个绑定字段来做到这一点
  • 非常tks,我要把这一切都放到自定义控件中。
猜你喜欢
  • 2018-11-27
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多