Default value cannot be 'Unset'
I have a attached property when I attach this to a xaml element I am getting an exception called "Default value cannot be 'Unset'"
My Attached property logic
public static DataTemplate GetFooterContentTemplate(DependencyObject obj)
{
return (DataTemplate)obj.GetValue(FooterContentTemplateProperty);
}
public static void SetFooterContentTemplate(DependencyObject obj, DataTemplate value)
{
obj.SetValue(FooterContentTemplateProperty, value);
}
// Using a DependencyProperty as the backing store for GetFooterContentTemplate. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FooterContentTemplateProperty =
DependencyProperty.Register("FooterContentTemplate", typeof(DataTemplate), typeof(RadWindowFooterProperties), new PropertyMetadata(DependencyProperty.UnsetValue));
public static Object GetFooterContent(DependencyObject obj)
{
return (Object)obj.GetValue(FooterContentProperty);
}
public static void SetFooterContent(DependencyObject obj, Object value)
{
obj.SetValue(FooterContentProperty, value);
}
// Using a DependencyProperty as the backing store for RadWindowFooterContent. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FooterContentProperty =
DependencyProperty.RegisterAttached("FooterContent", typeof(Object), typeof(RadWindowFooterProperties), new PropertyMetadata(DependencyProperty.UnsetValue));
Мой XAML:
<Grid x:Name="FooterRoot" Grid.Row="2" MinHeight="42">
<Border Background="{StaticResource ShellFooterBrush}"/>
<Border Background="{DynamicResource ShellTileBrush}"/>
<ContentPresenter Content="{Binding Path=(Local:RadWindowFooterProperties.FooterContent),RelativeSource={RelativeSource Mode=TemplatedParent}}" ContentTemplate="{Binding Path=(Local:RadWindowFooterProperties.FooterContentTemplate),RelativeSource={RelativeSource Mode=TemplatedParent}}" RecognizesAccessKey="True"/>
</Grid>
Пожалуйста, дайте мне знать, где я делаю ошибку.
2 ответа
DependencyProperty.UnsetValue
не является допустимым значением по умолчанию для свойства зависимости. Если вы не хотите указать значение по умолчанию, кроме null
Вам не нужно регистрировать метаданные свойства вообще.
Вы также должны изменить декларацию FooterContentTemplateProperty
использовать RegisterAttached
вместо Register
:
public static readonly DependencyProperty FooterContentTemplateProperty =
DependencyProperty.RegisterAttached(
"FooterContentTemplate", typeof(DataTemplate), typeof(RadWindowFooterProperties));
public static readonly DependencyProperty FooterContentProperty =
DependencyProperty.RegisterAttached(
"FooterContent", typeof(Object), typeof(RadWindowFooterProperties));
Хорошо, если я прочитал это правильно, это говорит:
Установка DefaultValue UnsetValue специально запрещена.
Поэтому я бы рекомендовал установить значение по умолчанию, например, null
или что-нибудь более подходящее для вашего использования.