我创建了一个依赖属性,它是一个依赖属性数组。我想以这种方式在xaml中添加值:
<z:Zoomable.UnScale>
<x:Static Member="Rectangle.StrokeThicknessProperty" ></x:Static>
<x:Static Member="Ellipse.StrokeThicknessProperty"></x:Static>
</z:Zoomable.UnScale>
但它抱怨此错误: 'StrokeThickness'不是属性'UnScale'的有效值。
该属性以这种方式定义:
public static readonly DependencyProperty UnScaleProperty =
DependencyProperty.RegisterAttached("UnScale", typeof(ObservableCollection<DependencyProperty>), typeof(Zoomable), new UIPropertyMetadata(GetPropertyCollection(), new PropertyChangedCallback(OnUnscaledChanged)));
我怀疑使用StaticExtension时存在一些问题,因为如果我尝试在纯xaml中添加DepenedencyPropery,它可以工作(虽然它不起作用,因为没有空的构造函数)。另一个奇怪的事情:如果我将该属性声明为一个可观察的对象集合,我首先添加一个虚拟对象!即:
<z:Zoomable.UnScale>
<Button> Any object here </Button>
<x:Static Member="Rectangle.StrokeThicknessProperty" ></x:Static>
<x:Static Member="Ellipse.StrokeThicknessProperty"></x:Static>
</z:Zoomable.UnScale>
答案 0 :(得分:2)
它尝试将属性设置为给定对象,而不是将项添加到集合中。所以,你应该做这样的事情:
<z:Zoomable.UnScale>
<z:DependencyPropertyCollection>
<x:Static Member="Rectangle.StrokeThicknessProperty" ></x:Static>
<x:Static Member="Ellipse.StrokeThicknessProperty"></x:Static>
</z:DependencyPropertyCollection>
</z:Zoomable.UnScale>
z:DependencyPropertyCollection
的位置:
public class DependencyPropertyCollection : ObservableCollection<DependencyProperty>
{
}