このコードを見てください:
var property = DependencyProperty.RegisterAttached(
"SomeAttachedProperty",
typeof(object),
typeof(View),
new PropertyMetadata(default(object)));
var sameProperty = DependencyProperty.RegisterAttached(
"SomeAttachedProperty",
typeof(object),
typeof(View),
new PropertyMetadata(default(object)));
2番目の登録はWPFで失敗し、AgrumentException
「プロパティはすでに登録されています」と表示されます(これは正しいです)。
私が見つけたWPFの逆コンパイルされたソースでDependencyProperty
:
FromNameKey key = new FromNameKey(name, ownerType);
lock (Synchronized)
{
if (PropertyFromName.Contains(key))
{
throw new ArgumentException(SR.Get(SRID.PropertyAlreadyRegistered,
name, ownerType.Name));
}
}
しかし、SL では、同じ名前と型を持つ既存のプロパティのチェックは見つかりませんでした。
問題は、SL がチェックしないのに、WPF がチェックする理由です。いくつかの基本的な制限がありますか?
ありがとうございました。