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