Hi Lloyd
To copy (clone) my standard properties i use this Method:
In the selectedProperties Argument I can define wich properties i loke to
copy.
Private Shared Sub CloneSelectedProperties(ByVal cloneElement As Object,
ByVal originElement As Object, ByVal selectedProperties As ArrayList)
Dim originProperty As Reflection.PropertyInfo
Dim cloneProperty As Reflection.PropertyInfo
Dim propertyName As String = ""
For Each propertyName In selectedProperties
originProperty = originElement.GetType.GetProperty(propertyName)
cloneProperty = cloneElement.GetType.GetProperty(propertyName)
If originProperty IsNot Nothing Then
If cloneProperty.CanWrite Then
cloneProperty.SetValue(cloneElement,
originProperty.GetValue(originElement, Nothing), Nothing)
Else
Dim reasonOfException As String =
VitoApplication.GetText(Core.TextCodes.PropertyIsReadOnly)
Dim objectInfo As String = originElement.GetType.FullName
Dim nameProperty As Reflection.PropertyInfo =
originElement.GetType.GetProperty("Name")
If nameProperty IsNot Nothing Then
objectInfo = objectInfo & " (Name=" &
nameProperty.GetValue(originElement, Nothing).ToString & ") "
End If
reasonOfException = String.Format(reasonOfException,
propertyName, objectInfo)
Throw New ElementMergeException("CloneSelectedProperties",
reasonOfException)
End If
End If
Next
End Sub
To Copy the Attached Properties i use this function
Private Shared Sub CloneDependencyProperties(ByVal cloneElement As
Object, ByVal originElement As Object)
Dim originDepObj As DependencyObject = TryCast(originElement,
DependencyObject)
If originDepObj IsNot Nothing Then
CloneDependencyProperty(CustomEventCommandBindingProperty,
originDepObj, cloneElement)
CloneDependencyProperty(DefaultEventCommandBindingProperty,
originDepObj, cloneElement)
End If
End Sub
Private Shared Sub CloneDependencyProperty(ByVal dependencyProperty As
DependencyProperty, ByVal originElement As DependencyObject, ByVal
cloneElement As Object)
Dim originDepObj As DependencyObject = TryCast(originElement,
DependencyObject)
Dim cloneDepProperty As Object
If originDepObj IsNot Nothing Then
cloneDepProperty = originDepObj.GetValue(dependencyProperty)
If cloneDepProperty IsNot Nothing Then
Dim cloneDepObj As DependencyObject = DirectCast(cloneElement,
DependencyObject)
cloneDepObj.SetValue(CustomEventCommandBindingProperty,
cloneDepProperty)
End If
End If
End Sub
It works, but I like to have a more generic solution
Horst