【问题标题】:binding string format from code-behind?从代码隐藏绑定字符串格式?
【发布时间】:2013-01-24 00:56:46
【问题描述】:

请有人告诉我如何从代码隐藏中获取像“0.0”这样的双精度值,如下所示:

Binding b = new Binding(DoubleValue);
b.StringFormat = "????";

在 xaml 中它就像“0.0”一样工作......

【问题讨论】:

    标签: wpf binding string-formatting


    【解决方案1】:

    这个怎么样?

    b.StringFormat = "{0:F1}";
    

    请参阅 StringFormat 以及 Standard Numeric Format StringsCustom Numeric Format Strings 的文档。


    编辑:只是为了明确如何在代码中创建和分配绑定(到名为 textBlock 的虚构 TextBlock 的 Text 属性):

    public class ViewModel
    {
        public double DoubleValue { get; set; }
    }
    
    ...
    
    var viewModel = new ViewModel
    {
        DoubleValue = Math.PI
    };
    
    var binding = new Binding
    {
        Source = viewModel,
        Path = new PropertyPath("DoubleValue"),
        StringFormat = "{0:F1}"
    };
    
    textBlock.SetBinding(TextBlock.TextProperty, binding);
    

    或者:

    var binding = new Binding
    {
        Path = new PropertyPath("DoubleValue"),
        StringFormat = "{0:F1}"
    };
    
    textBlock.DataContext = viewModel;
    textBlock.SetBinding(TextBlock.TextProperty, binding);
    

    【讨论】:

    • 谢谢,但我看到了所有这些文章。不行,不知道为什么……你可以在实际情况下试试吗?
    • 好的,它是绑定到 ObservableCollection item.Value 的用户控件中的文本框,绑定自己工作并且有输出,但 StringFormat 不影响它。而且我注意到我的值类型是浮动的,这有什么不同吗?
    • 你为什么不发布相关的代码部分?至少项目类的相关部分,即 DoubleValue 属性声明。此外,您实际应用绑定的代码也会很有趣。否则,一切都是猜测。您的示例代码中的 DoubleValue 到底是什么?
    • 正如我所说,DoubleValue 实际上不是双精度值,而是视图模型中属性的浮点值,抱歉,您需要大量代码才能弄清楚发生了什么。但是这个地方是很简单,我很确定没有其他绑定,所以只有这个绑定有效,甚至 StringFormat 也有效,例如,如果我将其设为“{0:F1}asdas”,则输出为“12.12321asdas”,但它是没有格式化值..
    • 我可以通过将属性类型从 float 更改为 string 来重现“{0:F1}asdas”的 StringFormat 并创建“12.12321asdas”的输出。你的绑定在某种程度上是错误的,这就是我强烈建议发布更多代码的原因。不是全部,而是相关部分。
    猜你喜欢
    • 2011-06-01
    • 2012-04-25
    • 1970-01-01
    • 2015-12-30
    • 2011-04-09
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多