RequirementAttribute Class

Defines attributes used by the RequirementValidator class.

Namespace:  Microsoft.Windows.Design
Assembly:  Microsoft.Windows.Design.Extensibility (in Microsoft.Windows.Design.Extensibility.dll)

Syntax

'Declaration
Public MustInherit Class RequirementAttribute _
    Inherits Attribute
'Usage
Dim instance As RequirementAttribute
public abstract class RequirementAttribute : Attribute
public ref class RequirementAttribute abstract : public Attribute
public abstract class RequirementAttribute extends Attribute

Remarks

Derive from the abstract RequirementAttribute class to specify requirements for your feature providers and feature connectors.

RequirementValidator inspects types for RequirementAttribute attributes. For each RequirementAttribute it finds, it calls the abstract MeetsRequirement method, passing an instance of the EditingContext class. Classes such as RequiresServiceAttribute derive from RequirementAttribute and check the context for the presence of a specified requirement.

This system allows the designer to activate only code that can successfully run in the editing context.

Define you custom requirements by deriving from RequirementAttribute and implementing the abstract MeetsRequirement method.

Examples

The following code example shows how to attach a custom surrogate policy to a feature provider by using UsesItemPolicyAttribute, which derives from RequirementAttribute. For a full code listing, see How to: Create a Surrogate Policy.

' The DockPanelAdornerProvider class implements an adorner 
' that you can use to set the Margin property by using a  
' drag operation. The DockPanelPolicy class enables a  
' container policy for offering additional tasks and  
' adorners on the panel's children.
<UsesItemPolicy(GetType(DockPanelPolicy))>  _
Class DockPanelAdornerProvider
    Inherits AdornerProvider

    Public Sub New() 
        ' The adorner is a Rectangle element. 
        Dim r As New Rectangle()
        r.Width = 23.0
        r.Height = 23.0
        r.Fill = AdornerColors.GlyphFillBrush

        ' Set the rectangle's placement in the adorner panel. 
        Dim placement As New AdornerPlacementCollection()
        placement.PositionRelativeToAdornerWidth(-1, 0)
        placement.SizeRelativeToAdornerDesiredHeight(1.0, 0)
        placement.SizeRelativeToAdornerDesiredWidth(1.0, 0)
        placement.PositionRelativeToAdornerHeight(-1.0, 0)
        AdornerPanel.SetPlacements(r, placement)

        Dim p As New AdornerPanel()
        p.Children.Add(r)

        AdornerPanel.SetTask(r, New DockPanelMarginTask())

        Adorners.Add(p)
    End Sub 
End Class
// The DockPanelAdornerProvider class implements an adorner 
// that you can use to set the Margin property by using a  
// drag operation. The DockPanelPolicy class enables a  
// container policy for offering additional tasks and  
// adorners on the panel's children.
[UsesItemPolicy(typeof(DockPanelPolicy))]
class DockPanelAdornerProvider : AdornerProvider
{
    public DockPanelAdornerProvider() 
    {
        // The adorner is a Rectangle element.
        Rectangle r = new Rectangle();
        r.Width = 23.0;
        r.Height = 23.0;
        r.Fill = AdornerColors.GlyphFillBrush;

        // Set the rectangle's placement in the adorner panel.
        AdornerPlacementCollection placement = new AdornerPlacementCollection();
        placement.PositionRelativeToAdornerWidth(-1, 0);
        placement.SizeRelativeToAdornerDesiredHeight(1.0, 0);
        placement.SizeRelativeToAdornerDesiredWidth(1.0, 0);
        placement.PositionRelativeToAdornerHeight(-1.0, 0);
        AdornerPanel.SetPlacements(r, placement);

        AdornerPanel p = new AdornerPanel();
        p.Children.Add(r);

        AdornerPanel.SetTask(r, new DockPanelMarginTask());

        Adorners.Add(p);
    }
} 

Inheritance Hierarchy

System.Object
  System.Attribute
    Microsoft.Windows.Design.RequirementAttribute
      Microsoft.Windows.Design.Policies.UsesItemPolicyAttribute
      Microsoft.Windows.Design.RequiresContextItemAttribute
      Microsoft.Windows.Design.RequiresServiceAttribute

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

RequirementAttribute Members

Microsoft.Windows.Design Namespace

RequiresContextItemAttribute

RequiresServiceAttribute

UsesItemPolicyAttribute

Other Resources

How to: Create a Surrogate Policy

Understanding WPF Designer Extensibility