如何将Silverlight UserControl创建为ContainerControl

如何将Silverlight UserControl创建为ContainerControl,silverlight,Silverlight,我需要在silverlight中创建UserControl作为ContainerControl(或Template),以便我可以在其他silverlight页面中添加控件 任何答案都是值得欣赏的…感谢GK Prajapati您想要创建的是一个Silverlight模板控件(扩展ContentControl) / 快速入门: C#MyControl.cs public class MyControl: ContentControl { public MyControl()

我需要在silverlight中创建UserControl作为ContainerControl(或Template),以便我可以在其他silverlight页面中添加控件


任何答案都是值得欣赏的…感谢GK Prajapati

您想要创建的是一个
Silverlight模板控件
(扩展
ContentControl

/

快速入门:

C#MyControl.cs

public class MyControl: ContentControl
{
    public MyControl()
        : base()
    {
        this.DefaultStyleKey = typeof(MyControl);
    }
    public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
    }
}
XAML MyControl.XAML

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:MyControlNsp="clr-namespace:My.Control.NameSpace">
    <Style TargetType="UserToolkit:WarningBar">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="MyControlNsp:MyControl">
                    <Border>
                            <ContentControl
                                x:Name="content"
                                Content="{TemplateBinding Content}"
                                ContentTemplate="{TemplateBinding ContentTemplate}"
                                HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

编辑:
如果控件不同,则可以与集合一起使用:

var myControl = new ItemsControl();
myControl.Items.Add(new TextBlock { Text = "My text block" });
myControl.Items.Add(new CheckBox { Content = "My check box" });
// Or with a collection of items
ObservableCollection<object> controls = new ObservableCollection<object>();
controls.Add(new TextBlock { Text = "My text block" });
controls.Add(new CheckBox { Content = "My check box" });
var myControl2 = new ItemsControl();
myControl2.ItemsSource = controls;
var myControl=newitemscontrol();
添加(newtextblock{Text=“My Text block”});
添加(新复选框{Content=“My check box”});
//或与一组项目一起使用
ObservableCollection控件=新的ObservableCollection();
添加(新文本块{Text=“我的文本块”});
添加(新复选框{Content=“My check box”});
var myControl2=new ItemsControl();
myControl2.ItemsSource=控件;

谢谢Tonio,但这样我只能在模板中添加一个控件..如果我的模板需要在每行中垂直获取多个控件,即文本框、单选按钮、列表框等..如果我了解您想要使用的话,在页面上应用模板时,每行应该能够获取一个标签和其中的控件。是的。。。。但即使我使用ItemsControl创建模板,我仍然只能传递一个控件(例如文本框、复选框等)……我如何传递堆栈中的多个控件,即每行有一个控件我不知道我是否理解,但看,我编辑了我的答案。我在
ItemsControl
中发送了许多键入的
项。