Как установить TypeConverter для присоединенного свойства зависимостей в Silverlight? - PullRequest
8 голосов
/ 27 августа 2010

Моя цель - записать это на XAML:

<Grid>
    <Rectangle Fill="AliceBlue"
            myCore:MyTimePanel.BeginningDate="03/03/2010"
            />
</Grid>

Проблема: Silverlight XAML не может проанализировать DateTime из строки.Поэтому во время выполнения у меня XamlParseException «не может создать DateTime из этой строки».

Когда я использую простой DependencyProperty, я просто добавляю TypeConverterAttribute на метод получения / установки, и он работает.Вот как это (идея из здесь ):

[TypeConverter(typeof(DateTimeTypeConverter))]
public DateTime MyDate
{
    get { return (DateTime)GetValue(MyDateProperty); }
    set { SetValue(MyDateProperty, value); }
}

Но с присоединенным DP нет геттера / сеттера.Что я могу сделать, чтобы иметь возможность записать строковую дату в XAML?

Спасибо!

1 Ответ

7 голосов
/ 27 августа 2010

Но в прикрепленных свойствах есть аксессор Get - вы пробовали поставить конвертер типов на аксессор Get ?

Извините за ссылку для конкретной версии, это та, которая содержитсущественная информация.С этой страницы:

3.Вы можете приписать TypeConverter уровня типа для типа, который служит типом значения.Это позволяет преобразовывать строки всех значений типа.Для получения дополнительной информации см. TypeConverters и XAML.

4.Вы можете приписать TypeConverter на уровне свойств с помощью метода доступа Get.Это позволяет преобразовать строку присоединенного свойства.Применение TypeConverterAttribute к методу доступа Get, а не к методу Access, может показаться неинтуитивным, но именно в этом случае процессоры XAML ожидают найти информацию о преобразовании типов (если есть) для присоединенного свойства.Для получения дополнительной информации см. TypeConverters и XAML.

...