.net 如何使Silverlight用户控件成为内容容器?
我正在制作一个Silverlight用户控件,其中控件的使用者需要能够提供自定义属性和内容。我认为这和将自定义属性公开为依赖属性并从ContentControl派生一样简单,但显然不是这样 以下是我的问题:.net 如何使Silverlight用户控件成为内容容器?,.net,wpf,silverlight,user-controls,.net,Wpf,Silverlight,User Controls,我正在制作一个Silverlight用户控件,其中控件的使用者需要能够提供自定义属性和内容。我认为这和将自定义属性公开为依赖属性并从ContentControl派生一样简单,但显然不是这样 以下是我的问题: 我将该属性作为一个简单的依赖属性使用,但要将其绑定到控件本身的UI,我必须将控件的DataContext设置为它自己的类(this.DataContext=this)。这感觉浑身脏兮兮的…有没有更好的方法 我可以让自定义控件的使用者使用内容子元素进行编译,但我不知道如何在控件本身中显示它。我
我很想让它发挥作用,但我也对推荐/最佳实践是什么以及为什么这么做感兴趣。我在谷歌上搜索这些东西时遇到了困难。注意:我在silverlight方面没有经验,但在WPF方面我会做以下工作 假设您有一个从UserControl派生的控件MyControl,其属性为MyProperty。我认为最漂亮的方法是为控件定义一个ControlTemplate:
<UserControl.Template>
<ControlTemplate TargetType="{x:Type SomeNamespace:MyControl}">
<StackPanel>
<TextBlock Text="{TemplateBinding MyProperty}"/>
<ContentPresenter/>
</StackPanel>
</ControlTemplate>
</UserControl.Template>
使用{TemplateBinding}可以快速创建(单向!)控件属性的绑定,同时仍然可以使用正常的{Binding}语法绑定到实际的DataContext。
在ControlTemplate中放置ContentPresenter将自动显示内容属性中的任何内容