Я хочу создать элемент управления Silverlight 2 с двумя областями содержимого. Заголовок и MainContent. Итак, контроль будет:
<StackPanel>
<TextBlock Text = " CONTENT1 "/>
<Content with CONTENT2 "/>
</StackPanel>
Когда я использую элемент управления, я просто могу использовать:
<MyControl Text = "somecontent">main content </MyControl>
Как я могу создать такой контроль?





Вам нужна была версия WPF HeaderedContentControl для Silverlight. Вы можете попробовать здесь. http://leeontech.wordpress.com/2008/03/11/headeredcontentcontrol-sample/
Это легко сделать с помощью атрибута ContentProperty.
Затем вы можете определить свой код как:
[ContentProperty("Child")]
public partial class MyControl: UserControl
{
public static readonly DependencyProperty ChildProperty = DependencyProperty.Register("Child", typeof(UIElement), typeof(MyControl), null);
public UIElement Child
{
get { return (UIElement)this.GetValue(ChildProperty); }
set
{
this.SetValue(ChildProperty, value);
this.content.Content = value;
}
}
Что это будет делать, так это любое содержимое по умолчанию в ваших тегах (<MyControl Text = "somecontent">main content </MyControl>) - будет установлено как свойство Child в вашем классе. Затем, как только он будет установлен, вы можете назначить его любому элементу управления, который вам нравится.
Редактировать:
Вы можете иметь столько содержимого, сколько хотите, но у вас может быть только 1 автоконтент (который определяется с помощью атрибута ContentProperty). Если вам нужны два, вы можете сделать:
<MyControl>
<MyControl.Content1>Hello World</MyControl.Content1>
<MyControl.Content2>Goodbye World</MyControl.Content2>
</MyControl>
Все, что вам нужно сделать, это убедиться, что в вашем коде есть соответствующие свойства зависимостей. Затем, когда свойство установлено, просто назначьте его родительскому элементу управления содержимым в своем XAML.
Ответил на мой вопрос, так как у меня здесь недостаточно персонажей.
Отлично, можно два содержимого?