C#类型为object的一般DependencyProperty的特定类型

时间:2018-03-30 18:06:48

标签: c# xaml types casting dependency-properties

我有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和Horizo​​ntalAlignment枚举):

<OwnerClass Value="100"/>
<OwnerClass Value="Left"/>

问题是指定的值将是一个字符串,而我希望xaml设计器能够根据ExpectedType属性分配一个正确的类型,而不会在Value更改时在代码后面的运行时强制转换。我知道我可以这样做:

<OwnerClass>
    <OwnerClass.Value>
        <SolidColorBrush Color="Black"/>
    </OwnerClass.Value>
</OwnerClass>

但我很想知道是否可以使用更短的语法来做到这一点(解决方案可能与我在此处提供的任何内容不同,只要它能够解决问题)。我试图在互联网上找到解决方案,但我找不到任何有用的东西。如果有人知道怎么做,我会非常感谢答案。

0 个答案:

没有答案