Прикрепленное свойство: «System.TypeInitializationException» при установке значения по умолчанию - PullRequest
1 голос
/ 20 января 2010

Я хочу установить значение по умолчанию для моего Присоединенного свойства, но когда я это получу, я получу:

Первое случайное исключение типа «System.ArgumentException» произошло в WindowsBase.dll

Первое случайное исключение типа «System.TypeInitializationException» произошло в Oef_AttDepProp.exe

Без значения по умолчанию все работает нормально. Вот пример кода, который я использовал:

public static readonly DependencyProperty IsEigenaarProperty = DependencyProperty.RegisterAttached(
"Eigenaar", typeof(clsPersoon), typeof(UIElement), 
new UIPropertyMetadata(new clsPersoon("test", "test"), PropertyChanged));

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Browsable(true)]
public clsPersoon Eigenaar
{
 get
 {
  return _persoon;
 }
 set
 {
  _persoon = value;
 }
}

public static void SetEigenaar(UIElement element, clsPersoon value)
{
 element.SetValue(IsEigenaarProperty, value);
}

public static clsPersoon GetEigenaar(UIElement element)
{
 return (clsPersoon)element.GetValue(IsEigenaarProperty);
}

private static void PropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
 if (obj is Window1)
  ((Window1)obj).Title = GetEigenaar(((Window1)obj)).ToString();
}

Проблема, по-видимому, связана с "новым clsPersoon (" test "," test ")", но это всего лишь очень простой класс с 2-строковым конструктором.

Редактировать : При попытке установить свойство с помощью события click вместо window_load я получаю innerException: «Значение по умолчанию для свойства 'Eigenaar' не может быть привязано к определенному потоку. «

1 Ответ

2 голосов
/ 20 января 2010

Обычно исключения типа TypeInitializationException генерируются, когда возникает исключение в статическом конструкторе. Посмотри туда.

Также из внутреннего исключения:

Значение по умолчанию для свойства Eigenaar не может быть привязано к определенному потоку.

Обычно это означает, что ваша собственность не является поточно-ориентированной (например, не наследуется от System.Windows.Freezable). Проверьте этот поток для получения подробной информации и MSDN для получения сведений о значениях по умолчанию для свойств зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...