C # WPF DataGrid Конвертеры

Я уже несколько дней пытаюсь отформатировать поля в сетке данных. Как я могу просто изменить Период является поле даты из доступа. В этой попытке я продолжаю получать сообщение об ошибке:

Значение

'{local: DateConverter}' не является допустимым выражением MarkupExtension. Не удается разрешить DateConverter в пространстве имен clr-namespace: Yabba. 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,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, Type targetType, object parameter, 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);
7 голосов | спросил Matty 29 MaramFri, 29 Mar 2013 07:13:39 +04002013-03-29T07:13:39+04:0007 2013, 07:13:39

1 ответ


0

Converter={local:DateConverter}}

Неправильно. Используйте это вместо:

Converter={StaticResource dateConverter}}

Обратите внимание на строчную букву "d". Имена ресурсов чувствительны к регистру.

ответил Federico Berasategui 29 MaramFri, 29 Mar 2013 07:15:30 +04002013-03-29T07:15:30+04:0007 2013, 07:15:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132