在usercontrol上设置属性,可以在控件中的自定义面板中使用... Silverlight

时间:2010-06-08 16:30:27

标签: silverlight user-controls listbox panel

我有一个简单的用户控件,它使用一个简单的自定义面板,我只是覆盖了方向和测量功能。

我想要做的是在usercontol中有一个属性来控制方向

所以我基本上有

UserControl
 --> Listbox
   --> MyPanel

我想要一个usercontrol属性,可以在xaml(类型为System.Windows.Controls.Orientation)中设置,我可以从我的自定义面板绑定(或者如果绑定不是正确的方法,可以使用不同的方法)它)

如果该属性可以显示在属性窗口中,您可以选择垂直或水平,这将是一个奖励。

如果我可以在设计时更改属性并拥有列表框/

,那么这是一个超级奖励

1 个答案:

答案 0 :(得分:1)

首先,您要为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>

我不知道属性窗口,但这应该可行。