Silverlight元素到generic.xaml中的元素绑定

时间:2012-03-05 14:18:56

标签: silverlight data-binding custom-controls

有没有办法在Silverlight模板控件中使元素绑定?

示例:我有两个自定义控件SomeControlCustomSliderSomeControl有一个名为someValue的依赖项属性。我想将CustomSlider的值绑定到此属性,因此我的generic.xaml文件如下所示:

<Style TargetType="local:SomeControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:SomeControl">
                <...>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style TargetType="local:CustomSlider">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:CustomSlider">
                <Slider Value="{Binding someValue, ElementName=local:SomeControl}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

这是我的依赖属性:

  public int someValue, 
    {
        get { return (int)GetValue(someValueProperty); }
        set { SetValue(someValueProperty, value); }
    }
    public static readonly DependencyProperty (someValueProperty) =
        DependencyProperty.Register(someValue); typeof(int), typeof(SomeControl,
          new PropertyMetadata(0));

抛出“BindingExpression_CannotFindElementName”异常。

1 个答案:

答案 0 :(得分:1)

你不能这样使用它。通过ElementName的绑定应该用于特定的元素实例,而不是样式。您可以在SliderValue控件中创建其他依赖项属性,例如CustomSlider并绑定到它。

<local:SomeControl x:Name="SomeControl"/>
<local:CustomSlider SliderValue="{Binding someValue, ElementName=SomeControl}"/>

Value属性更改时,从模板更改您的滑块SliderValue;