c# - Silverlight - 在用户控制范围内公开 Canvas

标签 c# silverlight silverlight-4.0 canvas

给定一个内部有 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/

相关文章:

c# - DataGrid 行内容垂直对齐

silverlight - 如何使用 DomainContext.Load 填充 ViewModel 的属性?

Silverlight 工具包命名空间为 "sometimes"未知

c# - 数据绑定(bind)到 ComboBox 中的 CollectionViewSource 时如何保留 CurrentItem 的双向绑定(bind)

javascript - 跨域可编写脚本的 Silverlight 应用程序

c# - 使用指定的电子表格类型创建 XmlNode

C# 属性封装

c# - 向 IEnumerable<T> 添加一项的最佳方法是什么?

c# - C# 中的 VBScript 错误处理

Asp.net、Silverlight 和 HTTPS - 始终验证证书