DrawingAttributes.PropertyDataChanged DrawingAttributes.PropertyDataChanged DrawingAttributes.PropertyDataChanged DrawingAttributes.PropertyDataChanged Event


Occurs when property data is added or removed from the StrokeCollection.

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


The following example is part of a custom stroke that can draw a three-dimensional effect. The stroke defines and stores a custom property called Shadowed, which belongs to DrawingAttributes. When the Shadowed property changes, the PropertyDataChanged event handler calls the OnInvalidated method, which causes the stroke to be redrawn.

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.
            if (!this.DrawingAttributes.ContainsPropertyData(shadow))
                return false;

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

            if (propertyData is bool)
                return (bool)propertyData;
                return false;

        // Set the value of the custom property.
            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);
                context.DrawGeometry(Brushes.DarkGray, null, pathGeometry);

        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 'New

    Public Property Shadowed() As Boolean 

        ' Return the value of the custom property, shadow.
        ' If there is no custom property, return false.
            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)
                Return False
            End If
        End Get
        ' Set the value of the custom property.
            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)
                context.DrawGeometry(Brushes.DarkGray, Nothing, pathGeometry)
            End Try
        End If
        MyBase.DrawCore(context, overriddenAttributes)

    End Sub 'DrawCore
End Class 'ShadowedStroke

Applies to