Silverlight - 在用户控件中公开画布

时间:2011-11-18 01:11:16

标签: c# silverlight silverlight-4.0 canvas

给定一个自定义用户控件,其中有一个画布。

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

有没有办法公开画布以允许其他控件附加到上述用户控件中?

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

我尝试将其作为属性公开,但是失败了,因为它被视为普通属性而不是允许附加UIElements的Collection。但是,通过检索画布并手动添加它,我可以使用后面的代码将控件附加到元素上 那么暴露画布的正确方法应该是什么?允许在设计时更改它,并保留canvas TOP和left依赖属性。

1 个答案:

答案 0 :(得分:0)

试试这个 - 将控件的类型从UserControl更改为ContentControl,放入Canvas内部并将ContentPresenter的Content属性以某种方式绑定到控件的Content属性 - 可能是通过命名控件并使用它。

以更标准的方式 - 您将其实现为模板化/自定义控件而不是UserControl,将模板放在您的Themes / Generic.xaml而不是MyControl.xaml中,在构造函数中定义DefaultStyleKey,定义TemplateParts等。