public class DateTimeConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values != null)
{
DateTime test = (DateTime) value ;
string date = test.ToString("d/M/yyyy");
return (date);
}
return string.Empty;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
从DatePicker中选择日期后,我将此转换器设置为获取当前时间。在字符串日期我得到从DatePicker中选择的值,但我似乎只能得到日期。进入Value属性的格式是9/24/2013 12:00:00,但我希望它是9/24/2013。我已经在datetime converter WPF提出了类似的问题,但提供的答案都没有奏效。我得到了同样的错误:指定的演员表无效。
答案 0 :(得分:10)
你不需要转换器来做这件事。您可以使用绑定中的StringFormat
格式化所选日期时间,以mm / dd / yyyy格式显示日期。
<TextBlock Text="{Binding Date, StringFormat={}{0:MM/dd/yyyy}}" />
我测试了这段代码,它工作正常。 XAML:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding TestList}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Start">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Start, StringFormat=d}" FontFamily="Verdana" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Start}" FontFamily="Verdana" >
<DatePicker.CalendarStyle>
<Style TargetType="Calendar">
<Setter Property="DisplayMode" Value="Month"/>
</Style>
</DatePicker.CalendarStyle>
</DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
型号:
public class TestData
{
DateTime start;
public DateTime Start
{
get { return start; }
set { start = value; }
}
}
ViewModel包含要绑定到DataGrid的TestData列表:
public List<TestData> TestList { get; set; }
答案 1 :(得分:0)
尝试一下。
DateTime test = (DateTime) value ;
string date = test.Date.ToString("d/M/yyyy");
//Use test.Date.tostring instad of test.tostring(...)
return (date);