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> 
{ 
} 
+0

谢谢,这是解决方案! – 2011-03-18 13:53:52