Я - большой поклонник большинства заголовков Robert C. Martin, особенно Гибкая разработка программного обеспечения, Принципы и Методы и Чистый Код: Руководство Гибкого Мастерства программного обеспечения .
<Canvas>
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" />
</Canvas.LayoutTransform>
</Canvas>
Если вы используете привязку данных, вы можете использовать TypeConvertor , но для этого вы должны выйти за пределы XAML и заранее знать размер холста.
I'd probably create a custom panel instead of using Canvas and give it the attached properties that make sense for your needs. Here is an example of implementing a custom panel:
http://blog.boschin.it/articles/silverlight-radialpanel.aspx
Something like Canvas is very simple since you don't have to do much in the measure and arrange overrides.
You may also be able to inherit from Canvas and override ArrangeOverride, I haven't tried that but it may work.