Freigeben über


DrawingAttributes.PropertyDataChanged Ereignis

Definition

Tritt ein, wenn der StrokeCollection benutzerdefinierte Eigenschaftendaten hinzugefügt oder aus dieser entfernt werden.

public:
 event System::Windows::Ink::PropertyDataChangedEventHandler ^ PropertyDataChanged;
public event System.Windows.Ink.PropertyDataChangedEventHandler PropertyDataChanged;
member this.PropertyDataChanged : System.Windows.Ink.PropertyDataChangedEventHandler 
Public Custom Event PropertyDataChanged As PropertyDataChangedEventHandler 
Public Event PropertyDataChanged As PropertyDataChangedEventHandler 

Ereignistyp

Beispiele

Das folgende Beispiel ist Teil einer benutzerdefinierten Strich, die einen dreidimensionalen Effekt zeichnen kann. Der Strich definiert und speichert eine benutzerdefinierte Eigenschaft namens Shadowed, die zu DrawingAttributesgehört. Wenn sich die Shadowed Eigenschaft ändert, ruft der PropertyDataChanged Ereignishandler die OnInvalidated -Methode auf, wodurch der Strich neu gezeichnet wird.

class ShadowedStroke : Stroke
{

    // Be sure to pass in the DrawingAttributes when you create the stroke to
    // subscribe to the PropertyDataChaned event.
    public ShadowedStroke(StylusPointCollection stylusPoints, DrawingAttributes drawingAttributes)
        : base(stylusPoints, drawingAttributes)
    {
        this.DrawingAttributes.PropertyDataChanged += new PropertyDataChangedEventHandler(DrawingAttributes_PropertyDataChanged);
    }

    Guid shadow = new Guid("12345678-9012-3456-7890-123456789012");

    public bool Shadowed
    {
        // Return the value of the custom property, shadow.
        // If there is no custom property, return false.
        get
        {
            if (!this.DrawingAttributes.ContainsPropertyData(shadow))
            {
                return false;
            }

            object propertyData = this.DrawingAttributes.GetPropertyData(shadow);

            if (propertyData is bool)
            {
                return (bool)propertyData;
            }
            else
            {
                return false;
            }
        }

        // Set the value of the custom property.
        set
        {
            this.DrawingAttributes.AddPropertyData(shadow, value);
        }
    }

    void DrawingAttributes_PropertyDataChanged(object sender, PropertyDataChangedEventArgs e)
    {
         this.OnInvalidated(new EventArgs());
    }

    protected override void DrawCore(System.Windows.Media.DrawingContext context, DrawingAttributes overrides)
    {
        // create a drop shadow
        //
        if (this.Shadowed)
        {
            Geometry pathGeometry = this.GetGeometry(overrides).Clone();
            pathGeometry.Transform = new TranslateTransform(5, 0);
            try
            {
                context.PushOpacity(0.5);
                context.DrawGeometry(Brushes.DarkGray, null, pathGeometry);
            }
            finally
            {
                context.Pop();
            }
        }
        base.DrawCore(context, overrides);
    }
}

Class ShadowedStroke
    Inherits Stroke
    
    Private shadow As New Guid("12345678-9012-3456-7890-123456789012")

    Public Sub New(ByVal stylusPoints As StylusPointCollection, ByVal drawingAttributes As DrawingAttributes)
        MyBase.New(stylusPoints, drawingAttributes)

        AddHandler Me.DrawingAttributes.PropertyDataChanged, AddressOf DrawingAttributes_PropertyDataChanged

    End Sub

    Public Property Shadowed() As Boolean 

        ' Return the value of the custom property, shadow.
        ' If there is no custom property, return false.
        Get
            If Not Me.DrawingAttributes.ContainsPropertyData(shadow) Then
                Return False
            End If
            
            Dim propertyData As Object = Me.DrawingAttributes.GetPropertyData(shadow)
            
            If TypeOf propertyData Is Boolean Then
                Return CType(propertyData, Boolean)
            Else
                Return False
            End If
        End Get
        
        ' Set the value of the custom property.
        Set
            Me.DrawingAttributes.AddPropertyData(shadow, value)
        End Set 

    End Property
    
    
    Private Sub DrawingAttributes_PropertyDataChanged(ByVal sender As Object, ByVal e As PropertyDataChangedEventArgs)

        Me.OnInvalidated(New EventArgs())

    End Sub

    Protected Overrides Sub DrawCore(ByVal context As System.Windows.Media.DrawingContext, _
                                     ByVal overriddenAttributes As DrawingAttributes)
        ' create a drop shadow
        '
        If Me.Shadowed Then
            Dim pathGeometry As Geometry = Me.GetGeometry(overriddenAttributes).Clone()
            pathGeometry.Transform = New TranslateTransform(5, 0)
            Try
                context.PushOpacity(0.5)
                context.DrawGeometry(Brushes.DarkGray, Nothing, pathGeometry)
            Finally
                context.Pop()
            End Try
        End If
        MyBase.DrawCore(context, overriddenAttributes)

    End Sub
End Class

Gilt für: