いくつかのカスタムコントロールを作成しました。それらの子は、WPFのプロパティブラウザーに添付されたプロパティを正しく表示しますが、Silverlightでは、添付されたプロパティはいずれもプロパティブラウザーに表示されません。
Silverlightでアタッチされたプロパティのデザインタイムサポートを追加するにはどうすればよいですか?
いくつかのカスタムコントロールを作成しました。それらの子は、WPFのプロパティブラウザーに添付されたプロパティを正しく表示しますが、Silverlightでは、添付されたプロパティはいずれもプロパティブラウザーに表示されません。
Silverlightでアタッチされたプロパティのデザインタイムサポートを追加するにはどうすればよいですか?
カスタムプロパティをデザイナに表示するために使用する属性があるようです:http:
//blogs.msdn.com/jnak/archive/2008/01/17/showing-attached-properties-in-the-cider -wpf-designer.aspx
私はそれを試していませんが、Silverlightで動作するかどうかはわかりません。
Henrik'sは、VS2015/BlendのWPFで間違いなく機能します。参考までに、リンクされた記事の情報の一部を追加します。これは、ブログへのリンクが数年後に何度も消滅するためです。
AttachedPropertyBrowsableWhenAttributePresentAttribute
この属性を使用すると、選択したアイテムに特定の属性が適用されている場合に、アタッチされたプロパティがプロパティブラウザに表示されるように指定できます。属性にデフォルト値がある場合、その値もデフォルト値とは異なる必要があります。
探す属性として「MyCustomAttribute」を渡す上記の例では、デザイナーで以下のCustomLabelが選択されている場合、プロパティブラウザーにShowWhenCustomAttribute添付プロパティが表示されますが、CustomLabelNoCustomAttributeが選択されている場合は表示されません。
[MyCustomAttribute]
public class CustomLabel : Label
{
}
public class CustomLabelNoCustomAttribute : Label
{
}
AttachedPropertyBrowsableForChildrenAttribute
この属性は、指定されたコントロールの子がアタッチされたプロパティを使用できるようにする必要があることを示します。この属性には2つの主なフレーバーがあります。子孫を含むものと含まないもの。ご想像のとおり、子孫を含めるとは、すべての子または単にコントロールの直接の子を含めることを指します。
[AttachedPropertyBrowsableForChildrenAttribute(IncludeDescendants=true)]
public static int GetShowForChildrenDeep(UIElement element)
{
return (int)element.GetValue(ShowForChildrenDeepProperty);
}
AttachedPropertyBrowsableForType
この属性を使用すると、特定のタイプまたはそのタイプから派生したタイプがデザイナで選択されたときに、アタッチされたプロパティが表示されるように指定できます。次のサンプルでは、グリッド、派生グリッド、ボタン、または派生ボタンが選択されたときに、アタッチされたプロパティが表示されます。
[AttachedPropertyBrowsableForType(typeof(Grid))]
[AttachedPropertyBrowsableForType(typeof(Button))]
public static int GetShowForTypes(UIElement element)
{
return (int)element.GetValue(ShowForTypesProperty);
}
そしてここにMSDNドキュメントリンクがあります:
https://msdn.microsoft.com/en-us/library/system.windows.attachedpropertybrowsableforchildrenattribute(v=vs.110).aspxhttps://msdn.microsoft.com/en-us/library/system.windows 。 attachpropertybrowsablefortypeattribute(v = vs.110).aspx https://msdn.microsoft.com/en-us/library/system.windows.attachedpropertybrowsablewhenattributepresentattribute(v=vs.110).aspx