给定一个自定义用户控件,其中有一个画布。
<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依赖属性。
答案 0 :(得分:0)
试试这个 - 将控件的类型从UserControl更改为ContentControl,放入Canvas内部并将ContentPresenter的Content属性以某种方式绑定到控件的Content属性 - 可能是通过命名控件并使用它。
以更标准的方式 - 您将其实现为模板化/自定义控件而不是UserControl,将模板放在您的Themes / Generic.xaml而不是MyControl.xaml中,在构造函数中定义DefaultStyleKey,定义TemplateParts等。