2012-03-05 68 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屬性更改;