我有DependencyProperties的问题。我有以下代码:
public object Value
{
get => GetValue(ValueProperty);
set => SetValue(ValueProperty, value);
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(nameof(Value), typeof(object),
typeof(owner), new PropertyMetadata(default(object)));
protected Type ExpectedType { get; set; }
它应该做的是ExpectedType属性是Value DependencyProperty应具有的类型。因此,例如,所有者类决定它想要接收一个double,因此ExpectedType是double。现在一切都很好,因为一般对象处理任何东西而且所有者只需要施放它。但通常在我的所有者类中,我想在xaml中设置Value属性,如下所示(分别为double和HorizontalAlignment枚举):
<OwnerClass Value="100"/>
<OwnerClass Value="Left"/>
问题是指定的值将是一个字符串,而我希望xaml设计器能够根据ExpectedType属性分配一个正确的类型,而不会在Value更改时在代码后面的运行时强制转换。我知道我可以这样做:
<OwnerClass>
<OwnerClass.Value>
<SolidColorBrush Color="Black"/>
</OwnerClass.Value>
</OwnerClass>
但我很想知道是否可以使用更短的语法来做到这一点(解决方案可能与我在此处提供的任何内容不同,只要它能够解决问题)。我试图在互联网上找到解决方案,但我找不到任何有用的东西。如果有人知道怎么做,我会非常感谢答案。