0

短い質問です。たとえばdouble weight、楕円にフィールドを追加したいとします。これどうやってするの?

2コピココメントすいません

4

2 に答える 2

2

を参照している場合System.Windows.Shapes.Ellipse、クラスを拡張することはできません - それはsealedです。ただし、カスタム添付プロパティを使用して重み情報を追加できます。

次の行に沿ったもの: (" HelperClass" 内)

public static readonly DependencyProperty WeightProperty = DependencyProperty.RegisterAttached(
  "Weight",
  typeof(double),
  typeof(HelperClass),
  new FrameworkPropertyMetadata(0)
);

public static void SetWeight(Ellipse element, double value){
  element.SetValue(WeightProperty, value);
}

public static double GetWeight(Ellipse element) {
  return (double)element.GetValue(WeightProperty);
}

そしてその後

HelperClass.SetWeight(ellipseInstance, 42d)

Ellipseが独自のクラス (ではない ) である場合DependencyObject、もちろん拡張は問題にならないはずです。

于 2013-10-30T15:20:37.133 に答える
1

この種の状況では、1 つの属性が Ellipse であり、他の属性が Ellipse クラスに追加する属性であるクラスを作成します。これは少し汚れていますが、Ellipse のすべての機能と追加の属性を含むクラスを持つことができます。

class WeightedEllipse
{
public Ellipse ellipse;
public double weight;

public WeightedEllipse(double weight)
    {
      this.ellipse=new Ellipse();
      this.weight=weight;
    }
}
于 2013-12-27T23:53:12.287 に答える