0

次の単純なTextBox サブクラスがあり、1 つの依存関係プロパティ(OutputIndex)が追加されます。

public class OutputTextBox : TextBox
{
    public OutputTextBox() : base() { }

    public int OutputIndex
    {
        get { return (int)this.GetValue(OutputIndexProperty); }
        set { this.SetValue(OutputIndexProperty, value); }
    }

    public static readonly DependencyProperty OutputIndexProperty = DependencyProperty.Register(
      "OutputIndex", 
      typeof(int), 
      typeof(OutputTextBox), 
      new PropertyMetadata(false));
}

次のように、OutputTextBox のインスタンスをインスタンス化しようとすると、

OutputTextBox otb = new OutputTextBox();

InnerExceptionでSystem.TypeInitializationExceptionがスローされ、「デフォルト値の型がプロパティ 'OutputIndex' の型と一致しません。

InnerException が参照している「デフォルト値の型」は何ですか? OutputTextBox のインスタンスをインスタンス化できるようにするには、どうすればよいですか?

4

1 に答える 1

2

PropertyMetadataは、デフォルト値falseでOutputIndexを初期化するように設定されています。False はブール値、OutputIndex は int であるため、型の例外です。

整数の引数をPropertyMetadataに渡すか、デフォルト値がない場合は空白のままにします。

于 2009-07-31T17:51:41.623 に答える