エクスポート (0) 印刷
すべて展開
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

DependencyObject.SetValue メソッド

DependencyObject で依存関係プロパティのローカル値を設定します。

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

public void SetValue(
	DependencyProperty dp,
	Object value
)

パラメーター

dp
型 : System.Windows.DependencyProperty
設定する依存関係プロパティの識別子。
value
型 : System.Object
新しいローカル値。

例外条件
ArgumentException

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

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

これに対して、SetValue のマネージ コード バージョンを使用するには、DependencyProperty オブジェクトの入力を用意する必要があります。 通常、この値は、依存関係プロパティの識別子として機能する public static プロパティ (依存関係プロパティ自体を所有する同じオブジェクトで使用できます) から取得します。 すべてのプロパティが依存関係プロパティであるとは限らないことに注意してください。つまり、SetValue のマネージ コード バージョンでは、Silverlight 向けマネージ API で使用できるプロパティの一部にアクセスできません (依存関係プロパティにのみアクセスできます)。

ユーザー コードでは、SetValue の呼び出しは一般的には不要です。 通常、Silverlight プロパティまたはカスタム依存関係プロパティには、そのプロパティをラップする CLR プロパティがあり、CLR の従来の使用方法によってそのプロパティ値を設定できます。 SetValue が一般的に使用される 3 つの代表的な例を次に示します。

  • カスタム依存関係プロパティを定義するとします。 CLR を使用するため、独自のプロパティ set アクセサーの定義の一部として SetValue を呼び出します。 詳細については、「カスタムの依存関係オブジェクトと依存関係プロパティ」を参照してください。

  • コールバックを定義するか、既に DependencyProperty 識別子が渡されている他のスコープを使用し、そのスコープで操作する必要のある依存関係プロパティが複数存在する可能性があるとします。 このような場合は、SetValue を呼び出して、識別子を渡す方が簡単です。

  • DependencyProperty 識別子で添付プロパティを参照するとします (または、それが添付プロパティであるか、CLR ラッパーを持つ依存関係プロパティであるかが明確ではないとします)。 添付プロパティには、通常はよりタイプ セーフである専用の get アクセサーと set アクセサーもありますが、既に識別子がある場合は、SetValue を使用する方がやはり簡単です。

JavaScript API についてのメモ

SetValue の JavaScript 実装は、その 1 番目のパラメーターの入力型が DependencyProperty オブジェクトではなく名前の文字列として扱われるという主な理由のため、著しく異なります。 JavaScript の SetValue メソッドを使用して、JavaScript API で使用できる Silverlight プロパティの値を設定できます。 ただし、すべての Silverlight プロパティが JavaScript においてより直接的な "ドット" で区切られたプロパティ構文をサポートしているため、通常は、プロパティ値を設定するために、このメソッドは必要ありません。

バージョンについてのメモ

Quirks モードのメモ

Silverlight 3 では、アクティブなアニメーションの最中にプロパティで SetValue が呼び出されたときの結果は、その 1 つのティックに限定されます。SetValue によってその値は正しく変更されますが、次のティックで、アニメーションによって値が破棄されます。 通常、視覚的には何も起こらなかったように見えます (新しい値への変更はごく短時間で行われるため、ユーザーはこれを認識できません)。 これまでは、SetValue を呼び出しても、アニメーションの基本値 (GetAnimationBaseValue の結果) は変更されませんでした。アニメーションが停止したときには、アニメーションの開始前にプロパティに設定されていた値に戻っていました。 この動作は、アプリケーションの対象が Silverlight 3の場合に、Quirks モードの動作として残ります。

Silverlight 4 以降では、アクティブなアニメーションの最中にプロパティの値が変更されると、その SetValue の呼び出しによってアニメーションの基本値が変更されます。 アニメーションが停止すると、アニメーション中に設定された新しい基本値に戻ります。 これは WPF での動作と一致します

単純な依存関係プロパティの宣言を次の例に示します。 新しい依存関係プロパティの CLR ラッパーの set アクセサー実装は、SetValue の呼び出しのみで構成されています。


public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(string),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}


Silverlight

サポート対象 : 5、4、3

Silverlight for Windows Phone

サポート対象 : Windows Phone OS 7.1、Windows Phone OS 7.0

Silverlight でサポートされるオペレーティング システムの詳細については、「サポートされているオペレーティング システムとブラウザー」を参照してください。

コミュニティの追加

追加
表示:
© 2014 Microsoft