2010-06-08 31 views
2

我有一个简单的用户控件,它使用简单的自定义面板,我只是取代了方向和测量功能。在用户控件上设置属性,可以在控件的自定义面板中使用... Silverlight

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

所以我basicaly有

UserControl 
--> Listbox 
    --> MyPanel 

而且我要为可以在XAML中设置的用户控件的属性(类型System.Windows.Controls.Orientation),我可以从我的自定义面板绑定(或不同的方法,如果绑定不是正确的方式做到这一点)

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

如果我能在设计时的属性更改,并有列表框超级奖金/

回答

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> 

我不知道属性窗口,但应该只是工作。

+0

我不确定我是否错过了一些东西,但没有运气,但谢谢。 首先,当试图绑定到Parent.anything时,它会炸弹。 不是你的语句绑定到网格的方向属性(x:Name =“LayoutRoot”),而不是usercontrol的依赖属性? – 2010-06-08 21:37:55

+0

没有。问:“LayoutRoot”的父母是什么?答:UserControl。因此,假设你已经将'Orientation'属性添加到'UserControl',LayoutRoot的属性路径'Parent.Orientation'应该可以工作。在我的机器上;) – AnthonyWJones 2010-06-08 22:10:57

+0

我的不好,我必须解决或发布代码。谢谢您的帮助! – 2010-06-08 23:34:18

相关问题