多绑定依赖项属性的问题

时间:2016-07-03 04:07:49

标签: wpf dependency-properties

我正在进行自定义控制。

我有三个依赖属性,如下所述。 现在,根据控制高度,宽度和用户提供的范围,我必须计算一个值和 将其显示在自定义控件中。

我正在尝试使用多绑定,我可以绑定所有这三个值,我的多值转换器将对此进行一些计算 并返回适当的值。

问题是我不知道将样式中的这个值绑定为多值转换器绑定。

依赖属性:

   public static readonly DependencyProperty ControlHeightProperty =
        DependencyProperty.Register("ControlHeight", typeof(double), typeof
   (TestControl), new PropertyMetadata(150D));

    public double ControlHeight
    {
        get { return (double)GetValue(ControlHeightProperty); }
        set { SetValue(ControlHeightProperty, value); }
    }

    public static readonly DependencyProperty ControlWidthProperty =
        DependencyProperty.Register("ControlWidth", typeof (double), typeof 
   (TestControl), new PropertyMetadata(default(double)));

    public double ControlWidth
    {
        get { return (double) GetValue(ControlWidthProperty); }
        set { SetValue(ControlWidthProperty, value); }
    }

    public static readonly DependencyProperty RangeProperty =
        DependencyProperty.Register("Range", typeof (double), typeof 
   (TestControl), new PropertyMetadata(default(double)));

    public double Range
    {
        get { return (double) GetValue(RangeProperty); }
        set { SetValue(RangeProperty, value); }
    }

样式(我还没有写过绑定):如果属性可以使用与我相同的样式 使用ElementName绑定。但在这种情况下,释放可能是高度和宽度。但Range是一个直接依赖属性 我必须以我的风格绑定(我的意思是我无法进行ElementName绑定)

   <TextBlock Grid.Row="1">
                            <TextBlock.Text>
                                <MultiBinding Converter="{StaticResource   
   CalculateConverter}">
                                    <Binding Path=""></Binding>
                                    <Binding Path=""></Binding>
                                    <Binding Path=""></Binding>
                                </MultiBinding>
                            </TextBlock.Text>
                        </TextBlock>

有人可以帮助我吗?

谢谢&amp;的问候,

1 个答案:

答案 0 :(得分:0)

您可以使用RelativeSource

<Binding Path="Range" RelativeSource="{RelativeSource AncestorType=UserControl, Mode=FindAncestor}"></Binding>