Как создать элемент управления Silverlight с двумя областями содержимого - PullRequest
0 голосов
/ 16 октября 2008

Я хочу создать элемент управления Silverlight 2 с двумя областями содержимого. Название и основное содержание. Таким образом, управление будет:

<StackPanel>
<TextBlock Text=" CONTENT1 "/>
<Content with CONTENT2 "/>
</StackPanel>

Когда я использую элемент управления, я должен просто использовать:

<MyControl Text="somecontent">main content </MyControl>

Как мне создать такой элемент управления?

Ответы [ 2 ]

7 голосов
/ 16 октября 2008

Это легко сделать с помощью атрибута 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 в вашем классе. Затем, когда он установлен, вы можете назначить его любому элементу управления, который вам нравится.

Edit:

Вы можете иметь столько содержимого, сколько хотите, но вы можете иметь только 1 авто-контент (который определяется через атрибут ContentProperty). Если вы хотите два, вы можете сделать:

<MyControl>
  <MyControl.Content1>Hello World</MyControl.Content1>
  <MyControl.Content2>Goodbye World</MyControl.Content2>
</MyControl>

Все, что вам нужно сделать, это убедиться, что в вашем коде есть соответствующие свойства зависимостей. Затем, когда свойство установлено, просто назначьте его родительскому элементу управления содержимым в вашем XAML.

0 голосов
/ 16 октября 2008

То, что вы хотели, это Silverlight версия WPF HeaderedContentControl Вы можете найти попытку здесь. http://leeontech.wordpress.com/2008/03/11/headeredcontentcontrol-sample/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...