用户控件中的依赖属性没有任何效果

时间:2016-02-29 20:39:30

标签: c# wpf xaml binding user-controls

在我的用户控件(类 LabeledBox )中,我添加了依赖属性,如下所示。

public static readonly DependencyProperty HorizontalProperty 
  = DependencyProperty.Register(
    "Horizontal", 
    typeof (Orientation), 
    typeof (LabeledBox), 
    new PropertyMetadata(default(Orientation)));

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

但是,根据以下设置时,并没有给我任何行为上的差异。事实上,财产中的设定者并没有被召唤。我错过了什么?

<local:LabeledBox x:Name="Info field" 
                  Description="Info" 
                  Horizontal="Horizontal" />

有问题的组件有一个堆栈面板作为最外面的控件,它就像这样绑定。

<StackPanel Name="TheContainer" Orientation="{Binding Horizontal}">

也许我错误地完成了绑定?

2 个答案:

答案 0 :(得分:1)

为您的UserControl

命名
<UserControl .... x:Name="labeledBox">

并使用这样的绑定:

<StackPanel Name="TheContainer" Orientation="{Binding Horizontal, ElementName=labeledBox}">

答案 1 :(得分:1)

是的,您的Binding不能很好地尝试将其更新为:

<StackPanel Name="TheContainer" 
            Orientation="{
              Binding Horizontal,
              RelativeSource={RelativeSource AncestorType=local:LabeledBox}}"/>