バインドの目的で、渡されたフレームワーク要素の最も一般的な依存関係プロパティを返すメソッドがあります。 を渡すとTextBlock
、このメソッドは を返しますTextBlock.TextProperty
。RadMaskedTextBox
などを返しますRadMaskedTextBox.MaskedTextProperty
。
デバッグ中に、 type の場合dp.Name
、それぞれ「Text」、「MaskedText」を取得します。ただし、dp.Name
コードでは使用できません。
ツールチップへの動的バインディングを実行しようとしています:
var binding = new Binding("Text") //Works
{
Source = frameworkElement
};
var binding = new Binding("MaskedText") //Works
{
Source = frameworkElement
};
var binding = new Binding(dp.Name) //Doesn't work
{
Source = frameworkElement
};
依存関係プロパティから "Text" または "MaskedText" を取得する方法がわかりません。また、最初から非表示になっている理由もわかりません。
.Net フレームワーク 4.5 / シルバーライト 5
あなたが与えることができる助けや洞察をありがとう!! JD
ケビン、どうもありがとう、あなたはかなり近かった. これは非公開フィールドなので、次のようにしました。
{
var dpType = dp.GetType();
var nameField = dpType
.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
.Single(pi => pi.Name == "Name");
var name = nameField.GetValue(dp);
}
ただし、nameField.GetValue(dp) を呼び出すと、FieldAccessViolation が発生します。時計で見ることはできますが、実際にアクセスすることはできません。なぜこの値を取得/使用できないのか理解できないので、誰かがこれを説明してくれることを願っています。特に、それ (文字列 "MaskedText") がパスに提供されなければならない場合。うーん!!!
しかし、あなたの助けをどうもありがとうございました! JD