给定一个内部有 Canvas 的自定义用户控件。
<Grid>
<Border BorderBrush="Black" BorderThickness="3">
<Canvas x:Name="CanvasDropArea" Background="#FFF7BDBD"/>
</Border>
</Grid>
有没有办法公开 Canvas 以允许将其他控件附加到上述用户控件中?
<CustomControlWithCanvas>
<Canvas>
<!--other user control-->
<Canvas>
</CustomControlWithCanvas>
我曾尝试将其作为属性公开,但失败了,因为它被视为普通属性,而不是允许附加 UIElement 的 Collection。但是,通过检索 Canvas 并手动添加它,我能够使用隐藏代码将控件附加到元素上。
那么正确的暴露 Canvas 的方式应该是怎样的呢?允许在设计时更改它,并保留 Canvas TOP 和左依赖属性。
最佳答案
试试这个 - 将您的控件类型从 UserControl 更改为 ContentControl,放入您的 Canvas 中并以某种方式将 ContentPresenter 的 Content 属性绑定(bind)到您的控件的 Content 属性 - 也许通过命名您的控件并使用 .
以更标准的方式 - 您可以将其实现为模板化/自定义控件而不是 UserControl,将模板放在 Themes/Generic.xaml 而不是 MyControl.xaml 中,在构造函数中定义 DefaultStyleKey,定义 TemplateParts 等。
关于c# - Silverlight - 在用户控制范围内公开 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176609/