2016-06-30 5 views
0

Ich habe derzeit eine Abhängigkeitseigenschaft als solche:CollectionPropertiesShouldBeReadOnly und Abhängigkeitseigenschaften

public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyPropertyDefaults", typeof(ICollection<string>), typeof(MyPanel), new PropertyMetadata(new List<string>())); 

public ICollection<string> MyProperty 
{ 
    get 
    { 
     return GetValue(MyPropertyProperty) as ICollection<string>; 
    } 

    set 
    { 
     this.SetValue(MyPropertyProperty, value); 
    } 
} 

Ziel ist es, dass diese subpanel eine Liste über eine Bindung übergeben werden wird, dass die subpanel manipuliert, und dann können die Eltern später lesen . Z.B.

<xaml:MyPanel MyProperty="{Binding MyPropertyList}" /> 

berichtet jedoch, FxCop CollectionPropertiesShouldBeReadOnly und ich brauche die Setter zu entfernen, die von der Unterkunft erforderlich ist. Wie behebe ich das? Was ist der richtige Weg, um das zu tun, was ich tue?

Antwort

0

Deklarieren Sie die Setter als privat wie folgt aus:

public class MyPanel : Panel 
{ 
    public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyPropertyDefaults", typeof(ICollection<string>), typeof(MyPanel), new PropertyMetadata(new List<string>())); 

    public ICollection<string> MyProperty 
    { 
     get 
     { 
      return GetValue(MyPropertyProperty) as ICollection<string>; 
     } 

     private set 
     { 
      this.SetValue(MyPropertyProperty, value); 
     } 
    } 
} 
+0

Nicht möglich? Die Eigenschaft 'MyPanel.MyProperty' kann nicht festgelegt werden, da sie über keinen Access des barrierefreien Sets verfügt. – Detritus

+0

Könnte das wie oben funktionieren? – Udo

+0

Nein, die Schnittstelle benötigt den Setter, um öffentlich zu sein, um ihn zu benutzen. Ich vermute, dass das Problem in der Sammlung liegt, die ich benutze, und ich sollte Sammlungen nicht direkt weitergeben, wie ich es bin, aber auf andere Weise? – Detritus

Verwandte Themen