Hi,
I hope my code helps you. In the past you have never rated my answers as helpful.
public class CanvasWithItemsSource : Canvas
{
public CanvasWithItemsSource()
{
Style st = new Style(typeof(Path));
st.Setters.Add(new Setter(Path.StrokeProperty, Brushes.Black));
st.Setters.Add(new Setter(Path.StrokeThicknessProperty, 0.7));
IMultiValueConverter converter = new Multiply2Numbers();
MultiBinding binding1 = new MultiBinding() { Converter = converter };
binding1.Bindings.Add(new Binding("RenderTransformOrigin.X") { RelativeSource = RelativeSource.Self });
binding1.Bindings.Add(new Binding("Scale") { RelativeSource = new RelativeSource() { AncestorType = typeof(Canvas) } });
st.Setters.Add(new Setter(Canvas.LeftProperty, binding1));
MultiBinding binding2 = new MultiBinding() { Converter = converter };
binding2.Bindings.Add(new Binding("RenderTransformOrigin.Y") { RelativeSource = RelativeSource.Self });
binding2.Bindings.Add(new Binding("Scale") { RelativeSource = new RelativeSource() { AncestorType = typeof(Canvas) } });
st.Setters.Add(new Setter(Canvas.TopProperty, binding2));
this.Resources.Add(typeof(Path), st);
}
......