Задать свойство в usercontrol, которое можно использовать на пользовательской панели в элементе управления ... Silverlight - PullRequest
2 голосов
/ 08 июня 2010

У меня есть простой пользовательский контроль, который использует простую пользовательскую панель, где я просто переопределил функции Ориентация и Измерение.

Что я хочу сделать, так это иметь свойство в usercontol для управления ориентацией

Итак, у меня есть

UserControl
 --> Listbox
   --> MyPanel

И я хочу свойство для usercontrol, которое можно установить в xaml (типа System.Windows.Controls.Orientation), к которому я могу привязаться из моей пользовательской панели (или другого подхода, если привязка не является правильным способом сделать это)

Было бы бонусом, если бы это свойство могло отображаться в окне свойств, и вы могли бы выбрать вертикальное или горизонтальное.

И супер бонус, если бы я мог изменить свойство во время разработки и получить список /

1 Ответ

1 голос
/ 08 июня 2010

Прежде всего, вы добавите свойство Orientation к вашему UserControl: -

    public Orientation Orientation
    {
        get { return (Orientation)GetValue(OrientationProperty); }
        set { SetValue(OrientationProperty, value); }
    }

    public static readonly DependencyProperty OrientationProperty =
            DependencyProperty.Register(
                    "Orientation",
                    typeof(Orientation),
                    typeof(YourNewUserControl),
                    new PropertyMetadata(Orientation.Vertical));

Способ связывания с MyPanel - через корневой элемент UserControl. Дайте корневому элементу имя (обычно это Grid с именем "LayoutRoot").

<ListBox ...>
  <ListBox.ItemsPanel>
     <ItemsPanelTemplate>
        <MyPanel Orientation="{Binding Parent.Orientation, ElementName=LayoutRoot}" />
     <ItemsPanelTemplate>
  </ListBox.ItemsPanel>

Я не знаю об окне свойств, но это должно сработать.

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