Set x:Shared="False"
on your resource so that everytime resource lookup is done via StaticResource, it returns new instance of resource.
Default value is true for all resources. Hence, you are getting the error regarding addition of same control in different Visual Trees.
From MSDN link of x:Shared:
When set to false, modifies WPF resource-retrieval behavior so that requests for the attributed resource create a new instance for each request instead of sharing the same instance for all requests.
And for second question that ElementName binding not working. That should work fine, I see no issue in that code. Your converter should fire successfully.
Just in case it doesn't, you can try with RelativeSource
in place of ElementName
to get ItemsControl:
<Binding RelativeSource="{RelativeSource Mode=FindAncestor,
AncestorType=ItemsControl}" Path="ActualHeight"/>
<Binding RelativeSource="{RelativeSource Mode=FindAncestor,
AncestorType=ItemsControl}" Path="ActualWidth"/>