エクスポート (0) 印刷
すべて展開

DependencyObject.SetValue メソッド (DependencyProperty, Object)

更新 : 2007 年 11 月

依存関係プロパティ識別子を指定して、該当する依存関係プロパティのローカル値を設定します。

名前空間 :  System.Windows
アセンブリ :  WindowsBase (WindowsBase.dll 内)

public void SetValue(
	DependencyProperty dp,
	Object value
)
public void SetValue(
	DependencyProperty dp,
	Object value
)
public function SetValue(
	dp : DependencyProperty, 
	value : Object
)
メソッドは XAML では使用できません。

パラメータ

dp
型 : System.Windows.DependencyProperty

設定する依存関係プロパティの識別子。

value
型 : System.Object

新しいローカル値。

例外条件
InvalidOperationException

読み取り専用の依存関係プロパティ、またはシールされている DependencyObject 上のプロパティを変更しようとしました。

ArgumentException

value が、dp プロパティに登録されている正しい型ではありません。

提供された型と最初に登録された依存関係プロパティに宣言されている型が一致しない場合は、例外がスローされます。value パラメータは、常に適切な型で提供される必要があります。

この例外条件には、設定対象となる依存関係プロパティの依存関係プロパティ識別子に存在する ValidateValueCallback コールバックが影響する可能性があります。それ以外の場合は、指定した値が一般的な型チェックの条件を満たしていないことが考えられます (たとえば、ネイティブ型が Double の場合に文字列を渡しているなど)。

この例では、共通言語ランタイム (CLR) のプロパティを DependencyProperty フィールドで補足する方法、つまり依存関係プロパティを定義する方法を示します。独自に定義したプロパティが Windows Presentation Foundation (WPF) のさまざまな機能、たとえばスタイル、データ バインディング、継承、アニメーション、既定値をサポートできるようにするには、そのプロパティを依存関係プロパティとして実装します。

次に示す例では、最初に Register メソッドを呼び出して依存関係プロパティを登録します。依存関係プロパティの名前と特性を格納するときに使用する識別子フィールドの名前は、Register の呼び出し時に依存関係プロパティに対して選択した Name でなければなりません。これに、リテラル文字列 Property が付加されます。たとえば、登録する依存関係プロパティの NameLocation ならば、この依存関係プロパティに対して定義する識別子フィールドの名前は LocationProperty とする必要があります。

この例では、依存関係プロパティとその CLR アクセサの名前は State、識別子フィールドは StateProperty、プロパティの型は Boolean、依存関係プロパティを登録する型は MyStateControl です。

このパターンに従って名前が付けられていない場合は、定義したプロパティがデザイナから正しく報告されず、プロパティ システムのスタイル適用の一部が予期したとおりに動作しなくなる可能性があります。

依存関係プロパティの既定のメタデータを指定することもできます。State 依存関係プロパティの既定値を false として登録する例を次に示します。

public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); } 
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}


サンプル全体については、「依存関係プロパティを含むカスタム クラスのサンプル」を参照してください。

単にプライベート フィールドを使用して CLR プロパティを補足するのではなく依存関係プロパティを実装する理由とその方法の詳細については、「依存関係プロパティの概要」を参照してください。

Windows Vista

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0

コミュニティの追加

追加
表示:
© 2014 Microsoft