Xaml 如何创建WPF UserControl,将画布作为;主面板;?

Xaml 如何创建WPF UserControl,将画布作为;主面板;?,xaml,canvas,wpf-controls,controltemplate,Xaml,Canvas,Wpf Controls,Controltemplate,我想创建一个内部有画布的UserControl。然后我可以在XAML中这样使用它: <Window ...> <Grid> <local:MyCanvasLikeControl> <Path .../> <Path .../> <Polygon.../> </local:MyCanvasLikeControl

我想创建一个内部有画布的UserControl。然后我可以在XAML中这样使用它:

<Window ...>
    <Grid>
        <local:MyCanvasLikeControl>
            <Path .../>
            <Path .../>
            <Polygon.../>
        </local:MyCanvasLikeControl>
     </Grid>
</Window>

但是,将“Border/Canvas”移动到名为“MyCanvasLikeControl”的用户控件中,这与将任何其他类型的元素填充到控件中会产生相同错误的场景类型相同,例如

<UserControl>
   <Grid/>
   <StackPanel/>
   <Canvas/>
   <!-- you get the idea -->
</UserControl>
这样你就可以按你想要的方式把这些东西注射进去

<Window ...>
    <Grid>
        <local:MyCanvasLikeControl>
            <local:MyCanvasLikeControl.Content>
               <Path .../>
               <Path .../>
               <Polygon.../>
            </local:MyCanvasLikeControl.Content>
        </local:MyCanvasLikeControl>
     </Grid>
</Window>


有意义吗?

没错,但我需要网格(或者画布)位于UserControl内部,因为它需要使用控件中定义的一些资源。此外,为了简单的信息隐藏、高内聚性和松耦合,容器类型应该被封装,我不确定你是否理解,它在usercontrol内部?当然,应该是这样。我想创建一个控件,我还没有这样做,以我发布的方式使用,它将像画布一样布局它的项目。
<local:MyCanvasLikeControl>
   <Grid>
     <Path .../>
     <Path .../>
     <Polygon.../>
   </Grid>
</local:MyCanvasLikeControl>
<Border ....>
   <Canvas ...>
      <ContentPresenter/> or <ContentControl/> etc.
   </Canvas>
</Border>
<Window ...>
    <Grid>
        <local:MyCanvasLikeControl>
            <local:MyCanvasLikeControl.Content>
               <Path .../>
               <Path .../>
               <Polygon.../>
            </local:MyCanvasLikeControl.Content>
        </local:MyCanvasLikeControl>
     </Grid>
</Window>