Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期时间格式区域性转换器_C#_.net_Silverlight_Xaml - Fatal编程技术网

C# 日期时间格式区域性转换器

C# 日期时间格式区域性转换器,c#,.net,silverlight,xaml,C#,.net,Silverlight,Xaml,我尝试将DateTimeFormatCultureConverter实现到DataGridTextColumn 它可以工作,我可以调试它,但它根本不会更改日期时间格式。因此我看不到任何可见的更改 (我总是可以使用返回格式化;//DateTime.Parse(格式化); 但在这种情况下,按ASC/DESC对字段进行排序不起作用。) 有什么线索吗 谢谢大家! 代码 public class DateTimeFormatCultureConverter: IValueConverter { publ

我尝试将DateTimeFormatCultureConverter实现到
DataGridTextColumn

它可以工作,我可以调试它,但它根本不会更改日期时间格式。因此我看不到任何可见的更改

(我总是可以使用
返回格式化;//DateTime.Parse(格式化);
但在这种情况下,按ASC/DESC对字段进行排序不起作用。)

有什么线索吗

谢谢大家!

代码

public class DateTimeFormatCultureConverter: IValueConverter
{

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
     {
           DateTime originalValue = (DateTime)value;

           CultureInfo currentUICulture = Thread.CurrentThread.CurrentUICulture;

           if (currentUICulture.EnglishName.Contains("Spanish") || currentUICulture.EnglishName.Contains("Portuguese"))
           {
                string formated = string.Format("{0}/{1}/{2}", originalValue.Day, originalValue.Month, originalValue.Year);
                return DateTime.Parse(formated);
           }
           else
           {
                string formated = string.Format("{0}/{1}/{2}", originalValue.Month, originalValue.Day, originalValue.Year);
                return DateTime.Parse(formated);                  
            }
   }

   public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
   {
       throw new NotImplementedException();
   }
}
数据网格

<sdk:DataGridTextColumn x:Name="txcInstalled" 
CanUserReorder="True" 
CanUserResize="True" 
CanUserSort="True" 
Width="Auto" 
Binding="{Binding Installed, Converter={StaticResource DateTimeFormatCultureConverter}}"
IsReadOnly="True" />

您返回的是一个
DateTime
变量,而不是格式化字符串。删除
returndatetime.Parse(格式化)
,而不是
返回格式化。这应该对你有好处

编辑不使用值转换器,您可以使用
StringFormat
绑定属性。看

以下内容应该为您提供一个特定于区域性的字符串,我认为这正是您要查找的内容:

<sdk:DataGridTextColumn x:Name="txcInstalled" 
CanUserReorder="True" 
CanUserResize="True" 
CanUserSort="True" 
Width="Auto" 
Binding="{Binding Installed, StringFormat={}{0:d}}"
IsReadOnly="True" />


正确。我始终可以使用返回格式;//DateTime.Parse(格式化);但在这种情况下,按ASC/DESC对字段进行排序不起作用。在你的问题中漏掉了这个。。我尝试了Binding=“{Binding Installed,StringFormat=”{}{0:d}',但它不起作用。错误是什么?我认为不需要有单引号。嗯……如果没有单引号,则会出现语法错误。因此它无法生成应用程序。