2012-03-05 115 views
0

有没有一种方法在Silverlight模板控件中有元素绑定元素?Silverlight元素绑定到generic.xaml元素

示例:我有两个自定义控件,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

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

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

而且从模板更改滑块Value当你SliderValue属性更改;