WPF:集合DependencyProperty不能“添加”静态
问题描述:
我想出了一个依赖项属性的依赖项属性。我想在XAML以这种方式添加值:WPF:集合DependencyProperty不能“添加”静态
<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一些问题,因为如果我尝试添加DepenedencyPropery纯XAML它的作品(虽然这是行不通的因为没有空的构造函数)。另一个奇怪的事情:如果我声明属性作为一个可观察的对象集合,我添加一个虚拟对象的第一个地方它的作品!即:
<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>
答
它试图将属性设置为给定的对象,而不是将项目添加到集合。所以,你应该做这样的事情:
<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>
{
}
谢谢,这是解决方案! – 2011-03-18 13:53:52