当前位置:  开发笔记 > 编程语言 > 正文

绑定上的StringFormat

如何解决《绑定上的StringFormat》经验,为你挑选了2个好方法。

视图:


我希望将日期格式化为"dd/MM/yyyy",换句话说,没有时间.

我试过了:但它不起作用.

给我一个错误:在'Binding'类型中找不到属性'StringFormat'.



1> 小智..:

最好和最简单的方法是使用转换器传递Date并获取格式化的字符串.在例如MyNamespace.Converters命名空间:

public class DateFormatConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value == null)
            return null;

        DateTime dt = DateTime.Parse(value.ToString());
        return dt.ToString("dd/MM/yyyy");
    }

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

在您的xaml中只需引用转换器并添加以下转换器:

xmlns:conv="using:MyNamespace.Converters" 

在你的xaml页面和page.resources中添加这个





使用该参数传递格式字符串,这可以完成工作.我想知道为什么他们没有在UWP中实现StringFormat?

2> Grace Feng..:

没有命名属性StringFormat的绑定类.您可以使用Converter和ConverterParameter执行此操作.您可以参考格式化或转换数据值进行显示.

例如,在这里,我将a的日期绑定到a DatePicker的文本TextBlock.

XAML:


    
        
    
    
    

代码隐藏,DateFormatter类:

public class DateFormatter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        var a = language;
        // Retrieve the format string and use it to format the value.
        string formatString = parameter as string;
        if (!string.IsNullOrEmpty(formatString))
        {
            return string.Format(formatString, value);
        }

        return value.ToString();
    }

    // No need to implement converting back on a one-way binding
    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return DependencyProperty.UnsetValue;
    }
}

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有