Silverlight -在用户控制下暴露画布

本文关键字:暴露 控制下 用户 Silverlight | 更新日期: 2023-09-27 18:14:57

给定一个自定义用户控件,里面有一个画布。

<Grid>
    <Border BorderBrush="Black" BorderThickness="3">
        <Canvas x:Name="CanvasDropArea" Background="#FFF7BDBD"/>
    </Border>
</Grid>

是否有一种方法来暴露画布,以允许其他控件被追加到上述用户控件?

<CustomControlWithCanvas>
   <Canvas>
        <!--other user control-->
   <Canvas>
</CustomControlWithCanvas>

我已经尝试暴露它作为一个属性,但失败了,因为它被视为一个正常的属性,而不是集合,允许ui元素被追加。但是,我能够使用后面的代码通过检索画布并手动添加它来将控件附加到元素上。
那么,画布的正确暴露方式应该是什么呢?允许在设计时更改,并保留canvas TOP和left依赖属性。

Silverlight -在用户控制下暴露画布

试试这个-把你的控件的类型从UserControl改为ContentControl,放在你的画布里面,并以某种方式将ContentPresenter的Content属性绑定到你的控件的Content属性-也许通过命名你的控件并使用。

在一个更标准的方式-你会实现它作为一个模板/自定义控件而不是UserControl,把模板在你的主题/通用。xaml而不是MyControl。在你的构造函数中定义DefaultStyleKey,定义TemplateParts等