C#WPF DataGrid转换器

我一直在尝试格式化数据网格中的字段数天.如何更改Period是访问的日期字段.在这次尝试中我不断收到错误

‘{local:DateConverter}’值不是有效的MarkupExtension表达式.无法在名称空间’clr-namespace:Yabba’中解析’DateConverter’. ‘DateConverter’必须是MarkupExtension的子类.

然而,我所有的例子都显示了DateConverter:IValueConverter.

我只是想根据日期更改列以列出我想要的内容.但无法获得任何1个示例/方法.

XAML

<Window Name="MainForm" x:Class="Yabba.MainWindow"
    xmlns:local="clr-namespace:Yabba"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="655.217" Width="887.851" Loaded="Window_Loaded">
<Window.Resources>
    <local:DateConverter x:Key="dateConverter"/>
</Window.Resources>
<Grid>
    <DataGrid Name="dataGrid1"  AutoGenerateColumns="False" PreviewKeyDown="dataGrid1_KeyDown" CanUserAddRows="false" SelectionUnit="FullRow" IsReadOnly="True" SelectionMode="Single" HorizontalAlignment="Left" VerticalAlignment="Top" Height="348" Width="753" SelectionChanged="dataGrid1_SelectionChanged" Margin="0,20,0" MouseDoubleClick="dataGrid1_MouseDoubleClick">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Question" Binding="{Binding title}"></DataGridTextColumn>
            <DataGridTextColumn Header="Period" Binding="{Binding started,Converter={local:DateConverter}}"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

namespace Yabba {
/// <summary>
[ValueConversion(typeof(DateTime),typeof(String))]
public class DateConverter : IValueConverter {
    public object Convert(object value,Type targettype,object parameter,CultureInfo culture) {
        DateTime date = (DateTime)value;
        return date.ToShortDateString();
    }

    public object ConvertBack(object value,CultureInfo culture) {
        string strValue = value as string;
        DateTime resultDateTime;
        if (DateTime.TryParse(strValue,out resultDateTime)) {
            return resultDateTime;
        }
        return DependencyProperty.UnsetValue;
    }
}

在这做错了什么?

为使用此示例的任何人添加了注释:(无关联,请查看所选答案的答案)

您可能需要根据需要更改类型.

[ValueConversion(typeof(DateTime),typeof(String))]

我不得不改变我的

[ValueConversion(typeof(String),typeof(String))]

然后重铸到DateTime

DateTime date = DateTime.Parse((string)value);

解决方法

转换器= {本地:DateConverter}}

是错的.改为使用它:

Converter = {StaticResource dateConverter}}

注意小写“d”.资源名称区分大小写.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...